¿Tipo de entrada numérica que solo acepta números enteros?

Resuelto JayPea asked hace 12 años • 0 respuestas

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 patternvalidació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.

JayPea avatar Jan 11 '12 01:01 JayPea
Aceptado

Lo mejor que puedes lograr solo con HTML ( documentación ):

<input type="number" min="0" step="1"/>
Expandir fragmento

Mmmh mmh avatar Jun 20 '2013 08:06 Mmmh mmh

Establezca el stepatributo en 1:

<input type="number" step="1" />
Expandir fragmento

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 patternatributo, que utiliza una expresión regular para hacer coincidir la entrada:

<input type="text" pattern="\d*" />
Expandir fragmento

\des la expresión regular para un número, *significa que acepta más de uno de ellos.

js-coder avatar Jan 10 '2012 18:01 js-coder
<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

thejustv avatar May 03 '2014 11:05 thejustv

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');" >
Tarek Kalaji avatar May 18 '2015 11:05 Tarek Kalaji