Проверка формы Javascript "onKeyup vs on keydown" - PullRequest
1 голос
/ 24 сентября 2010

Группа, у меня быстрый вопрос?-Есть ли способ вызвать это событие onclick при последнем нажатии клавиши.

Например: убедитесь, что newPwd == reTypePwd для последнего нажатия в текстовом поле reTypePwd.Если мой пароль foo, я бы хотел, чтобы событие вызывалось на «o», а не на «f».

function allClear() {
 var newPasswd = document.getElementById('newPwd');
 var reTypePasswd = document.getElementById('reTypePwd');

 newPasswd.value = "";
 reTypePasswd.value = "";
 return true;
}
function validate()
 {
   var currPwd = document.getElementById("currPwd").value;
   var newPwd = document.getElementById("newPwd").value;
   var confirmNP = document.getElementById("reTypePwd").value;
   if(currPwd == "" || newPwd == "")
   {
      document.getElementById("btnChange").disabled = true;
      if(confirmNP!=newPwd){
      document.getElementById("confirm").value = "Doesn't Match";
    }
 }
     if(confirmNP!=newPwd)
     {
     document.getElementById("newPwd").style.cssText = "border-color:Red";
     document.getElementById("reTypePwd").style.cssText = "border-color: Red"; 
     } 
     else {
           document.getElementById("btnChange").disabled = false;
           document.getElementById("newPwd").style.cssText = "border-color:none";
           document.getElementById("reTypePwd").style.cssText = "border-color: none"; 

            }
          }

Спасибо

Чад

Ответы [ 2 ]

2 голосов
/ 24 сентября 2010

Вы не должны использовать onkeyup или onkeydown исключительно для обнаружения ввода пользователя.Они не улавливают крайние случаи, такие как обрезка, вставка, перетаскивание или исправления проверки правописания.Вы должны использовать событие HTML 5, oninput , где это возможно (Firefox 2+, Google Chrome, Safari 4+, Opera 10) и событие Internet Explorer onpropertychange .Для браузеров, которые не поддерживают ни одно из этих событий, вы можете вернуться к onkeydown с таймером 0 мс для проверки, что немного лучше, чем onkeyup .

В новых браузерах вы можете проверить наличие события oninput , которое должно быть наиболее надежным.

0 голосов
/ 24 сентября 2010

Я предполагаю, что "когда последнее нажатие клавиши вверх" означает, что два поля пароля содержат значения одинаковой длины?Если это так, то сначала прослушиватель событий keyup проверит длину значений.Например, не пытайтесь проверять, пока длина 2-го пароля не станет равной или большей, чем длина 1-го пароля.Конечно, если второе длиннее первого, оно не проходит проверку:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...