Я недавно начал с Javascript, и я обнаружил одну проблему с моей проверкой password.length.
http: // jsfiddle .net / uYss7 / < Сильный > Код:

document.observe('dom:loaded', function() {
    $('passwordan').observe('keypress', function(event) {
        if (this.value.length < 5) {    
            this.setStyle({backgroundColor: 'blue'});

        } else {
            this.setStyle({backgroundColor: 'white'});
        }
    });
});     

< Сильный > Вопрос :
Он автоматически заполняет его информацией. Я нахожусь на 127.0.0.1, причина в том, что поле «passwordan» просто потому, что я хотел посмотреть, запоминает ли Firefox ранее введенные данные после имен блоков или идентификаторов, но это не так.
То, что происходит, - то, что это автоматически заполняет пять *, и это ломает мой Javascript. Его длина равна 5, и если я щелкну внутри поля, Ctrl + A (помечает пять *), и напишу письмо (без возврата, просто замена), он все еще белый. Длина теперь равна 1, и она должна быть синей (так как длина меньше 5). Если я отмечу это, нажму клавишу Backspace и напишу письмо, тогда оно будет работать как положено.
Вот изображение, которое объясняет:
http://makeagif.com/media/2-02-2013/pc1TSL.gif

*

pktangyue дал мне исправление:

A simple way to fix it is using keyup event instead of keypress.

Because keypress triggered before value change, while keyup triggered after it.

Спасибо !
* И еще один вопрос: почему после перехода к синему (и снова к белому) сверху появляется серая рамка?

1
William N 3 Фев 2013 в 05:15

2 ответа

Лучший ответ

Простой способ исправить это - использовать keyup событие вместо keypress.

Потому что keypress срабатывает до изменения значения, а keyup - после него.

1
pktangyue 3 Фев 2013 в 01:30

Последний вопрос: браузеры имеют свой собственный стиль по умолчанию. Если вы хотите удалить контур с этим CSS.

input:focus {
    outline: none;
}
0
jcdang 3 Фев 2013 в 01:35