0

У меня есть куча количество входов HTML, и я схватил ихJavascript не может применить существующую функцию OnKeyUp

x=document.querySelectorAll('input[type="number"]'); 

Я затем попытаться перебирать это с для цикла, и применять функция onkeyup. Функция заключается в следующем:

t=function(elem){ 


elem.onkeyup=function(e) { 
    if(!/[\d\.]/.test(String.fromCharCode(e.which))) { 
    elem.value=''; 
} 
}; 
}; 

В принципе, то, что она делает, это ясно значение ввода, если есть письмо напечатал я знаю, я могу применить его с помощью HTML

<input type='number' onkeyup='t(this)'/> 

Но как может. Я делаю это с помощью javascript? Я пробовал перебирать его с помощью

x=document.querySelectorAll('input[type="number"]'); 
for(i=0; i<x.length; i++){ 
    x[i].onkeyup=t(this); 
} 

но он не работает. Что я делаю не так? Как я могу это сделать? Пожалуйста, используйте только обычные ответы на JavaScript, нет jQuery или других фреймворков/библиотек.

+0

Кстати, Thi s создает очень плохой опыт пользовательского интерфейса, и пользователи могут по-прежнему вводить нецифровые символы путем копирования и вставки или перетаскивания. Лучше проверить результат, когда они закончат ввод данных и сообщают об ошибках, а не пытаются выдумать пользователя. – RobG

+0

посмотреть на события 'input', чтобы заменить' keyup' – dandavis

ответ

1

изменение

x[i].onkeyup=t(this); 

в

x[i].onkeyup=t(x[i]); 

потому this это не то, что вы хотите быть

+0

, похоже, не работает для меня. Можете ли вы сделать демо или что-то еще? Я уверен, что мне не хватает чего-то маленького ... – Leshy

+0

неважно, я нашел ответ – Leshy

0

Извинения, все. Я нашел ответ. Соглашаясь с Jaromanda X, мне нужно изменить

x[i].onkeyup=t(this); 

в

x[i].onkeyup=t(x[i]); 

Это (каламбур;) был частью проблемы, но главная проблема в том, что действительное имя свойства

keyup=function(); 

и не

onkeyup=function(){}'