Onkeydown
, я запускаю следующий JavaScript:
function ThisOnKeyDown(el) {
if (el.title == 'textonly') {
!(/^[A-Za-zÑñ-\s]*$/i).test(el.value) ? el.value = el.value.replace(/[^A-Za-zÑñ-\s]/ig, '') : null;
}
if (el.title == 'numbersonly') {
!(/^[0-9]*$/i).test(el.value) ? el.value = el.value.replace(/[^0-9]/ig, '') : null;
}
if (el.title == 'textandnumbers') {
!(/^[A-Za-zÑñ0-9-\s]*$/i).test(el.value) ? el.value = el.value.replace(/[^A-Za-zÑñ0-9-\s]/ig, '') : null;
}
}
Один из этих трех атрибутов заголовка присваивается различным полям ввода на странице. Код работает до тех пор, пока недопустимые символы удаляются правильно, но только после ввода следующего символа. Я хочу найти способ просто отрицать неправильный ввод в первую очередь. Я ценю вашу помощь!
Редактировать : Я создаю события глобально. Вот как я это делаю:
function Globalization() {
var inputs = document.getElementsByTagName('input');
for (i = 0; i < inputs.length; i++) {
inputs[i].onfocus = createEventHandler(
ThisOnFocus, inputs[i]);
inputs[i].onblur = createEventHandler(
ThisOnBlur, inputs[i]);
inputs[i].onkeydown = createEventHandler(
ThisOnKeyDown, inputs[i]);
inputs[i].onkeyup = createEventHandler(
ThisOnKeyUp, inputs[i]);
}
}
Globalization()
выполняется body.onload
Следовательно, типичное поле ввода имеет HTML без вызовов функций, например:
<input id="AppFirstName" style="width: 150px;" type="text" maxlength="30" title="textonly"/>