Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zmiana typu inputa
Forum PHP.pl > Forum > XML, AJAX
brayan.tr
Witam, poniższy skrypt zmienia typ inputa z text na password po akcji focus. Wszystko fajnie lata pod prawie wszystkimi przeglądarkami. No własnie prawie. W IE trzeba dwukrotnie kliknąć na pole inputa żeby móc wpisywać hasło. Wie ktoś jak pomóc ?

  1. $(document).ready(function() {
  2. formSet();
  3.  
  4. });
  5.  
  6. function formSet()
  7. {
  8. jQuery('#haslo1').focus(function() {
  9. jQuery('#haslo1').replaceWith('<input type="password" name="haslo1" class="nowe_haslo" id="haslo1" />');
  10. jQuery('#haslo1').focus();
  11. jQuery('#haslo1').blur(function(){
  12. if($(this).val() == '') { // Nie uzupełniono pola
  13. jQuery('#haslo1').replaceWith('<input id="haslo1" type="text" name="haslo1" class="nowe_haslo" value="Twoje nowe hasło" />');
  14. formSet(); // Ustawiam ponownie focus na pole typu text
  15. }
  16. });
  17. })
  18. }
krowal
Po co wywołujesz .focus() na elemencie na którym właśnie został wywołany ten event ? - usuń linijkę nr 10
Po co podmieniasz cały element html input zamiast zmienić tylko jego atrybut value (linijka 9 i 13) ? - przez to najprawdopodobniej w IE traci focus i dlatego musisz klikać dwa razy. Wygląda to tak że jak klikasz na input to jest on zastępowany nowym elementem html przez co ten kliknięty (stary) traci focus, nieważne że maja te same id.
brayan.tr
Nie zmieniam jedynie value pola a także jego typ. Powyższy skrypt prezentuje jedyne rozwiązanie zmiany typu inputa z text na password jakie spełnia działa mi poprawnie. Nie spotkałem się w sieci z innymi rozwiązaniami tego problemu. Jeśli takowe jest to proszę o wskazówkę lub przykład.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.