Onkeydown
, corro el siguiente JavaScript:Cómo evitar que los caracteres no válidos de ser escrito en campos de entrada
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;
}
}
Uno de estos tres atributos title se da a diversos campos de entrada en la página. El código funciona en la medida en que los caracteres no válidos se borren correctamente, pero no hasta que se ingrese el siguiente carácter. En primer lugar, quiero encontrar una manera de negar la entrada no válida. ¡Aprecio tu ayuda!
Editar: creo los eventos globalmente. He aquí cómo lo hago:
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()
se ejecuta body.onload
Por lo tanto, un campo de entrada típica tiene HTML sin función llama así:
<input id="AppFirstName" style="width: 150px;" type="text" maxlength="30" title="textonly"/>
agrega esta función a 'OnKeyPress' y' OnKeyUp' – sll
Solo recuerda que este tipo de validación no es suficiente y que siempre has eliminado este lado del servidor de chars. –
@sll, agregando a Onkeyup da un efecto de retroceso. (Onkeypress hace lo mismo). Lo que quiero hacer es negar la entrada que siempre aparece. – Mike