hola tengo esta funcion para permitir digitos 0-9 pero quiero incluir el signo negativo. ¿Como podría hacerlo? Gracias.
function allowNumbersOnly(e) { var code = (e.which) ? e.which : e.keyCode; if (code > 31 &&(code < 48 || code > 57)) { e.preventDefault();} else if (code==109){ e.preventDefault(); } }Consulte también la entrada de texto HTML que permite solo la entrada numérica .
Agregue una prueba para verificar si es el primer carácter y permita "-". De lo contrario, ejecute las otras pruebas. p.ej
function allowNumbersOnly(e) { let len = e.target.value.length; var code = (e.which) ? e.which : e.keyCode; if (len == 0 && code == 45) { return; } if (code > 31 && (code < 48 || code > 57)) { e.preventDefault(); } else if (code == 109) { e.preventDefault(); } } window.onload = function() { document.querySelector('#i0').addEventListener('keypress', allowNumbersOnly, false); } <input id="i0">Sin embargo, eso solo permite la entrada de "-" como el primer y único carácter, no se puede agregar más tarde para cambiar, por ejemplo, "1" a "-1".
Personalmente, encuentro este tipo de función de interfaz de usuario muy molesta, por ejemplo, evita que se presionen teclas para copiar y pegar valores. Simplemente deje que el usuario ingrese lo que quiera y trate con eso. Si no cumple con los criterios requeridos, simplemente infórmele al usuario con un mensaje amigable y déjelo arreglarlo.