Я пытаюсь переместить событие JavaScript триггеры на двух полях пароля (для предупреждения пользователя, если они не равны) внутри элементов формы кфункция никогда не вызывается getElementById(). AddEventListener()
document.getElementById('id_password1').addEventListener('keyUp', checkPass);
document.getElementById('id_password2').addEventListener('keyUp', checkPass);
но функция никогда не срабатывает (если я изменю checkPass
к checkPass()
функция вызывается только загрузке страницы, но я не думаю, что это означает, что это время срабатывает слушателем). В консоли JavaScript нет ошибок. Если изменить идентификаторы на что-то поддельным, он дает эту ошибку:
Uncaught TypeError: Cannot read property 'addEventListener' of null
(я не достаточно знакомы с инспектором Chrome JavaScript, чтобы знать, если это может помочь мне в дальнейшем.)
Все работает правильно, если триггеры события находятся непосредственно в элементах формы.
Вот элементы формы:
<p>Password: <input id="id_password1" name="password1" type="password" /></p>
<p>Password confirm: <input id="id_password2" name="password2" type="password" /></p>
Что мне не хватает?
<HTML><HEAD>
<TITLE>Create account</TITLE>
</HEAD>
<BODY>
<h1>Create account</h1>
<form id="user_form" method="post" action="/accounts/register/">
<p>Username: <input id="id_username" maxlength="30" name="username" type="text" /> <span class="helptext">Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.</span></p>
<p>Password: <input id="id_password1" name="password1" type="password" /></p>
<p>Password confirm: <input id="id_password2" name="password2" type="password" /></p>
<span id="confirmMessage" class="confirmMessage"></span>
<input type="submit" name="submit" value="Register" />
</form>
<script language="JavaScript">
function checkPass() {
var pass1 = document.getElementById('id_password1');
var pass2 = document.getElementById('id_password2');
alert("pass1=" + pass1.value + ", pass2=" + pass2.value);
//Check passwords here. Set confirmMessage if bad.
}
document.getElementById('id_password1').addEventListener('keyUp', checkPass);
document.getElementById('id_password2').addEventListener('keyUp', checkPass);
</script>
</BODY></HTML>
Вот оно! Помимо поиска списка возможных событий, это то, что я мог бы выяснить в отладчике JavaScript? Как видеть имена фактически вызванных событий? Я использую Chrome. – aliteralmind
(Это действительно вопрос «опечатки», но, похоже, он не кажется закрытым.) – aliteralmind
Я так не думаю. Причина в том, что вы можете, конечно, присоединить свои СОБСТВЕННЫЕ события. Таким образом, вы можете разумно прослушивать событие под названием «keyUp» или «keyUP» и т. Д. Если вы хотите, как я это понял, мое эмпирическое правило состоит в том, чтобы просто следовать этому шаблону отладки: 1) проверить и исправить ошибки скрипта, 2) предполагают, что волшебная строка как-то не так. В этом случае «onkeyup». – aquinas