¿Tipo de entrada numérica que solo acepta números enteros?
Estoy usando jQuery Tools Validator que implementa validaciones HTML5 a través de jQuery.
Ha funcionado muy bien hasta ahora excepto por una cosa. En la especificación HTML5, el tipo de entrada"number"
puede tener tanto números enteros como números de punto flotante.
Esto parece increíblemente miope, ya que solo será un validador útil cuando los campos de su base de datos estén firmados con números de punto flotante (para entradas sin firmar tendrá que recurrir a la pattern
validación y, por lo tanto, perderá características adicionales como las flechas hacia arriba y hacia abajo para los navegadores). que lo sustentan).
¿Existe otro tipo de entrada o quizás un atributo que restringiría la entrada solo a números enteros sin signo ?
No pude encontrar ninguno.
Establecer el paso en 1 no es la respuesta ya que no restringe la entrada. Aún puedes escribir un número de punto flotante negativo en el cuadro de texto.
Además, conozco la validación de patrones (lo mencioné en mi publicación original), pero eso no era parte de la pregunta.
Quería saber si HTML5 permitía restringir una entrada de tipo "número" a valores enteros positivos. A esta pregunta la respuesta parece ser "no, no es así".
No quería usar la validación de patrones porque esto causa algunos inconvenientes al usar la validación de jQuery Tools, pero ahora parece que la especificación no permite una forma más limpia de hacerlo.
Lo mejor que puedes lograr solo con HTML ( documentación ):
<input type="number" min="0" step="1"/>
Establezca el step
atributo en 1
:
<input type="number" step="1" />
Esto parece tener algunos errores en Chrome en este momento, por lo que puede que no sea la mejor solución en este momento.
Una mejor solución es utilizar el pattern
atributo, que utiliza una expresión regular para hacer coincidir la entrada:
<input type="text" pattern="\d*" />
\d
es la expresión regular para un número, *
significa que acepta más de uno de ellos.
<input type="text" name="PhoneNumber" pattern="[0-9]{10}" title="Phone number">
Usando este código, la entrada al campo de texto se limita a ingresar solo dígitos. Patrón es el nuevo atributo disponible en HTML 5.
Documento de atributos de patrón
La forma más sencilla de utilizar JavaScript:
<input type="text" oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');" >