2015-12-01 8 views
1

При создании текстового поля (данных 5) динамически следующая функция работаетOnKeyDown не работает, ONBLUR работает

input5.onblur = function() {validate_quantity(this)} 

, но следующий, не работает

input5.onkeydown = function() {validateNumbers(event)} 

Когда я загрузить страницу, у меня есть первое текстовое поле в HTML, с

onblur="validate_quantity" onkeydown="validateNumbers(event) 

и ОБА работают хорошо в первом текстовом поле, что случилось с моим input5.onkeydown линия?

+0

Пожалуйста, определите «работающий/неработающий» и покажите код для 'validate_quantity'. – Teemu

+0

с ctrl-alt-j в mozilla он отправляет мне «событие не определено» – mariovi

+0

Int HTML он говорит «onkeydown =» return validateNumbers (event) '», вместо этого – mariovi

ответ

0

Код, который вы показываете, предназначен для высоконадежной обработки триггеров JS. Так мы обработали события в эпоху HTML4.01 (1998), но не так, как вы занимаетесь обработкой событий в современных HTML и JS.

Современный подход заключается в использовании прослушивания событий, используя addEventListenerremoveEventListener) функции в немного страницы сценария (загружается только до </body> так, чтобы любые элементы, которые должны быть найдены с помощью document.getElementById или document.querySelector может не указано):

var userInput = document.getElementById("userinput"); 

function dataHandler(evt) { 
    var quantity = userInput.value; 
    if (validateQuantity(quantity)) { 
    // do things 
    } 
} 

userInput.addEventListener("blur", dataHandler); 
userInput.addEventListener("keydown", dataHandler); 
+0

динамически, как будет объявление обработчика? – mariovi

+0

Я не знаю, что вы имеете в виду с этим вопросом. Вы правильно определили свою функцию обработки, а затем присоедините элемент, который должен использовать его в качестве обработчика события, когда этот элемент существует и будет готов к генерации событий. –

+0

Я имею в виду что-то вроде: input5.addEventListener («размытие», validate_quantity) ;, которое выполняется, когда я создаю текстовое поле с createElement. Но это не работает. вот почему я спросил, как это будет код – mariovi

Смежные вопросы