El maxlength
atributo no funciona con <input type="number">
. Esto sucede solo en Chrome.
<input type="number" class="test_css" maxlength="4" id="flight_number" name="number"/>
fuente
El maxlength
atributo no funciona con <input type="number">
. Esto sucede solo en Chrome.
<input type="number" class="test_css" maxlength="4" id="flight_number" name="number"/>
De la documentación de MDN para<input>
Si el valor de la Tipo de atributo es
text
,search
,password
,tel
, ourl
, este atributo especifica el número máximo de caracteres (en puntos de código Unicode) que el usuario puede introducir; para otros tipos de control, se ignora.
Entonces maxlength
es ignorado <input type="number">
por el diseño.
Dependiendo de sus necesidades, puede utilizar el min
y max
atributos como Inon sugerido en su / su respuesta (Nota: esto sólo definir un rango restringido, no la longitud de caracteres real del valor, aunque -9999 a 9.999 cubrir toda 0-4 números de dígitos), o puede usar una entrada de texto regular y aplicar la validación en el campo con el nuevo pattern
atributo:
<input type="text" pattern="\d*" maxlength="4">
type="number"
es un nuevo tipo de la especificación HTML 5. Si el navegador que está probando en no reconocetype="number"
que lo tratará comotype="text"
los que no respeten elmaxlength
atributo. Esto puede explicar el comportamiento que estás viendo.type=number
entrada al configurar elmax
atributo. Este atributo solo restringe el número elegido por la ruleta de entrada.\d*
aquiregex
y el patrón es increíblemente creativo. Pero en el móvil, no es diferenteAndroid
oiOS
, es unatext
entrada, por lo que causa un malUX
.La longitud máxima no funcionará de
<input type="number"
la mejor manera que sé, es usar eloninput
evento para limitar la longitud máxima. Por favor vea el siguiente código.fuente
||0/1
oninput="this.value=this.value.slice(0,this.maxLength)"
debería funcionar<input type="number">
stackoverflow.com/questions/18510845/…Muchos chicos publicaron un
onKeyDown()
evento que no funciona en absoluto, es decir, no puedes eliminarlo una vez que alcanzas el límite. Entonces, en lugar deonKeyDown()
usarloonKeyPress()
, funciona perfectamente bien.A continuación se muestra el código de trabajo:
fuente
number
tipo de entrada html5Tengo dos maneras para que hagas eso
Primero: use
type="tel"
, funcionará comotype="number"
en un dispositivo móvil y acepte maxlength:Segundo: use un poco de JavaScript:
fuente
Puede usar los atributos min y max .
El siguiente código hace lo mismo:
fuente
9999
el usuario puede escribir manualmente en un número que exceda esa longitud.Cambie su tipo de entrada a texto y use el evento "oninput" para llamar a la función:
Ahora use Javascript Regex para filtrar la entrada del usuario y limitarla solo a números:
Demostración: https://codepen.io/aslami/pen/GdPvRY
fuente
Una vez tuve el mismo problema y encontré esta solución con respecto a mis necesidades. Puede ayudar a alguien.
Happy Coding :)
fuente
También puede probar esto para la entrada numérica con restricción de longitud
fuente
tel
entrada se validará automáticamente como tal y, en algunos casos extraños, los0
s principales se cambiarán a1
s.DEMO - JSFIDDLE
fuente
Aquí está mi solución con jQuery ... Debe agregar maxlength a su tipo de entrada = número
Y maneje copiar y pegar:
Espero que ayude a alguien.
fuente
this.value = this.value.slice(0, this.maxLength);
¿Crees que esto tiene algún problema? No he encontrado ninguno hasta ahora. Cubre el texto pegado también.En mi experiencia, la mayoría de los problemas en los que la gente pregunta por qué
maxlength
se ignora es porque el usuario puede ingresar más que el número "permitido" de caracteres.Como han dicho otros comentarios, las
type="number"
entradas no tienen unmaxlength
atributo y, en cambio, tienen un atributomin
ymax
.Para que el campo limite el número de caracteres que se pueden insertar y, al mismo tiempo, permita que el usuario se dé cuenta de esto antes de enviar el formulario (de lo contrario, el navegador debe identificar el valor> max), deberá (por ahora, al menos) agregar un Oyente al campo.
Aquí hay una solución que he usado en el pasado: http://codepen.io/wuori/pen/LNyYBM
fuente
Sé que ya hay una respuesta, pero si desea que su entrada se comporte exactamente como el
maxlength
atributo o lo más cerca posible, use el siguiente código:fuente
Chrome (técnicamente, Blink) no implementará la longitud máxima para
<input type="number">
.La especificación HTML5 dice que maxlength solo es aplicable a los tipos texto, url, correo electrónico, búsqueda, teléfono y contraseña.
fuente
La solución absoluta que acabo de probar recientemente es:
fuente
¡Haré esto rápido y fácil de entender!
En lugar de maxlength for
type='number'
(maxlength está destinado a definir la cantidad máxima de letras para una cadena en untext
tipo), usemin=''
ymax=''
.Salud
fuente
<input type="number">
es solo eso ... una entrada numérica (aunque no convertida desde una cadena para flotar a través de Javascript).Supongo que no restringe los caracteres en la entrada de teclas
maxLength
o, de lo contrario, su usuario podría quedar atrapado en una "trampa de teclas" si olvidaron un decimal al principio (Intente poner un.
índice en1
cuando<input type"text">
ya se haya alcanzado un atributo "maxLength" ) Sin embargo, se validará en el envío del formulario si establece unmax
atributo.Si está tratando de restringir / validar un número de teléfono, use el
type="tel"
atributo / valor. Obedece elmaxLength
atributo y solo muestra el teclado del número móvil (en los navegadores modernos) y puede restringir la entrada a un patrón (es decirpattern="[0-9]{10}"
).fuente
Para usuarios de React,
Simplemente reemplace 10 con su requisito de longitud máxima
fuente
maxlenght - texto de tipo de entrada
usando jQuery:
maxlenght - número de tipo de entrada
JS
HTML
fuente