0
пытается предотвратить ввод нецифровых символов в текстовое поле. мой код проверяет символы, но не останавливает его добавление в текстовое поле.stop event on keyup in mootools не работает
мой код:
var isNumberKey = function(e){
//alert(e.which);
if (e.which > 31 && (e.which < 48 || e.which > 57))
return false;
return true;
}
var isBackSpaceKey = function(e){
return e.which == 8;
}
var isArrowKey = function(e) {
return e.which >= 37 && e.which <= 40;
}
var inputs = $$('.numberOnly');
inputs.addEvent('keyup', function(e){
console.log(e.which);
if (!isNumberKey(e) && !isBackSpaceKey(e) && !isArrowKey(e)){
e.stop();
return false;
}
return true;
});
HTML:
<input name="t1" type="text" class="numberOnly" id="t1"/>
+1 для keydown, как для тестирования, это выглядит разумно для меня: '(e.key && e.key.test (/ ([\ d] | Закладка | забой | enter | left | right | up | down) /)) || e.stop(); ' –
:' (e.key && e.key.test && e.key.test (/ ([\ d] | вкладка | backspace | delete | enter | left | right | up | вниз) /)) || e.stop(); '- нужна дополнительная проверка, так как некоторые num pad клавиши не нормализуются к строкам с помощью mootools, а вызов' .test' будет небезопасным. также может быть 'e.key && e.key.length && ...' или он может получить канал, напечатанный в строке, чтобы быть в безопасности. –
http://jsfiddle.net/dimitar/TsAkb/2/ -> необходимо добавить проверку состояния переключения и преобразовать e.key в строку, если она указана как номер (num pad). –