Estoy usando el Validador de herramientas jQuery que implementa validaciones HTML5 a través de jQuery. Ha estado funcionando muy bien hasta ahora, excepto por una cosa. En la especificación HTML5, el tipo de entrada "número" puede tener números enteros y números de coma flotante. Esto parece increíblemente miope, ya que solo será un validador útil cuando los campos de la base de datos sean números de punto flotante con signo (para entradas sin signo, tendrá que recurrir a la validación de "patrón" y, por lo tanto, perder características adicionales como arriba y abajo flechas para navegadores que lo soporten). ¿Hay otro tipo de entrada o tal vez un atributo que restringiría la entrada a enteros sin signo? No pude encontrar ninguno, gracias.
EDITAR
Ok, muchachos, agradezco su tiempo y ayuda, pero veo muchas votaciones no merecidas: D. Establecer el paso a 1 no es la respuesta, ya que no restringe la entrada. Todavía puede escribir un número negativo de coma flotante en el cuadro de texto. Además, soy consciente de 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ía "no, no lo hace". 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.
fuente
number
entrada (al menos en FF / Chrome / Safari) ahora solo acepta enteros por defecto, a menos que establezca un valor explícito para elstep
atributo que permita valores decimales; por ejemplo:step="0.01"
. MDN documentado aquí . En dos mentes acerca de esto porque creo que es un valor predeterminado razonable, pero también un cambio importante (sí, ha afectado algún código que escribí).Respuestas:
https://www.w3.org/wiki/HTML/Elements/input/number
Lo mejor que puedes lograr solo con HTML
fuente
min
a1
lo que quiera números positivos (y números no no negativos).<input type="number" min="0" step="1"/>
Es la respuesta más correcta a la pregunta. De todos modos, ¿qué sentido tiene tener ambosstep="1"
ypattern="\d+"
? No puedo escribir números de coma flotante en ninguno de los casos.Establezca el
step
atributo en1
:Esto parece un poco defectuoso en Chrome en este momento, por lo que podría no ser la mejor solución en este momento.
Una mejor solución es usar el
pattern
atributo, que usa una expresión regular para que coincida con la entrada:\d
es la expresión regular para un número,*
significa que acepta más de uno de ellos. Aquí está la demostración: http://jsfiddle.net/b8NrE/1/fuente
number
que contiene otros caracteres, Chrome le mostrará un mensaje de error.submit
para activar la publicación./\d*/.test(1.1) // true
pattern="\d*"
no es lo mismo que/\d*/
,pattern="\d*"
es igual a/^(?:\d*)$/
, consulte la documentación de atributos de patrón HTML5 .Con este código, la entrada al campo de texto limita para ingresar solo dígitos. El patrón es el nuevo atributo disponible en HTML 5.
Atributo de patrón doc
fuente
La manera fácil de usar JavaScript:
fuente
replace(/(\..*)\./g, '$1')
.
solo una vez, por ejemplo,123.556
se puede escribir.El patrón es bueno, pero si desea restringir la entrada a números solo con type = "text", puede usar oninput y una expresión regular como se muestra a continuación:
Me calienta :)
fuente
Esto no es solo para html5, todo el navegador funciona bien. prueba esto
fuente
oninput
lugarLos patrones siempre son preferibles para restricción, intente
oninput
ymin
ocurra 1 para ingresar solo números del 1 en adelantefuente
¿Has intentado establecer el
step
atributo en 1 como este?fuente
Tal vez no se ajusta a todos los casos de uso, pero
puede hacer un buen trabajo: violín .
Revisa la documentación .
fuente
Sí, HTML5 sí. Pruebe este código ( w3school ):
¿Ves el parámetro mínimo y máximo? Lo probé usando Chrome 19 (funcionó) y Firefox 12 (no funcionó).
fuente
Solo poniéndolo en su campo de entrada:
onkeypress='return event.charCode >= 48 && event.charCode <= 57'
fuente
Estaba trabajando en Chrome y tuve algunos problemas, aunque uso atributos html. Terminé con este código js
fuente
Conjunto
step="any"
. Funciona bien. Referencia: http://blog.isotoma.com/2012/03/html5-input-typenumber-and-decimalsfloats-in-chrome/fuente
De las especificaciones
Entonces, simplemente podría configurarlo en
1
:fuente
Establezca el
step
atributo en cualquier número flotante, por ejemplo, 0.01 y estará listo.fuente
fuente
Actualmente, no es posible evitar que un usuario escriba valores decimales en su entrada solo con HTML. Tienes que usar javascript.
fuente
fuente
En el futuro ™ (consulte ¿Puedo usarlo? ), En los agentes de usuario que le presentan un teclado, puede restringir una entrada de texto solo con números
input[inputmode]
.fuente
inputmode
es principalmente para dispositivos de mano y activará la distribución correcta del teclado, pero para computadoras "normales" con teclados, no impedirá ingresar lo que desee.