Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Форма смены пароля, password/text, показать все что скрыто (https://javascript.ru/forum/dom-window/35764-forma-smeny-parolya-password-text-pokazat-vse-chto-skryto.html)

colonel_337 21.02.2013 15:00

Форма смены пароля, password/text, показать все что скрыто
 
Здравствуйте дорогие жабаскриптеры!

Нужна ваша помощь. Есть форма смены пароля, чекбокс, что бы звездочки в инпутах поменять на символы.
Все работает, проблема не в этом. Проблема в том, что если я до введения паролей включаю форму "Показать пароль", то сам пароль показывается, но в POST запрос не передается.
Если я сначала ввожу данные, потом включаю показ - данные передаются.
Догадываюсь, что тут кака то маленькая хрень, но недостаток образования в jQuery делает свое черное дело.
Буду очень благодарен за помощь.

$content .= <<<HTML

 <form method="post"  name='exch'  action=''>
$lang[exchange_old_pass]:<input type='password' id='old_pass' name='old_pass'  />
$lang[exchange_new_pass]:<input type='password' id='pass' name='pass'  onblur="CheckReg('pass',this.value); return false;"/>

 <label><input type="checkbox"  id="show_pass">$lang[exchange_show]</label>
 <input  type='submit'   value="$lang[exchange_go]" name="go" />
 </form>
<script>

$('#show_pass').change(function() {
    var pass = $('#old_pass');
    var newpass = $('#pass');

    if (!pass.next().is('.pass-show') | !newpass.next().is('.pass-show')) {
        $('<input class="pass-show">').val(pass.val()).hide().insertAfter(pass);
        $('<input class="pass-show">').val(newpass.val()).hide().insertAfter(newpass);
    }

    if ($(this).is(':checked')) {
        pass.hide().next().show();
        newpass.hide().next().show();
    }
    else {
        pass.show().next().hide();
        newpass.show().next().hide();
    }
});
</script>

HTML;

danik.js 21.02.2013 18:16

<input type="password" id="old_pass" name="old_pass" />
<input type="password" id="pass" name="pass" onblur="return;CheckReg('pass',this.value)" />
<input type="checkbox" id="show_pass" />
<script src="//code.jquery.com/jquery-latest.js"></script>
<script>
(function(){
    var fields = [$('#old_pass').get(0), $('#pass').get(0)];
    $('#show_pass').change(function() {
        var type = this.checked ? 'text' : 'password';
        try {
            $(fields).prop('type', type);
        } catch (e) {
            // IE workaround
            for (var i=0; i < fields.length; i++) {
                $(fields[i]).replaceWith(function(){
                    return fields[i] = $('<input/>', {
                        id: this.id,
                        name: this.name,
                        value: this.value,
                        onblur: this.onblur,
                        type: type
                    }).get(0);
                });
            }
        }
    });
})();
</script>

colonel_337 21.02.2013 18:38

Спасибо тебе, добрый человек, все работает как из пушки.


Часовой пояс GMT +3, время: 09:26.