O maxlength
atributo não está funcionando <input type="number">
. Isso acontece apenas no Chrome.
<input type="number" class="test_css" maxlength="4" id="flight_number" name="number"/>
fonte
O maxlength
atributo não está funcionando <input type="number">
. Isso acontece apenas no Chrome.
<input type="number" class="test_css" maxlength="4" id="flight_number" name="number"/>
Da documentação da MDN para<input>
Se o valor do tipo de atributo é
text
,search
,password
,tel
, ouurl
, este atributo especifica o número máximo de caracteres (em pontos de código Unicode) que o utilizador pode introduzir; para outros tipos de controle, ele é ignorado.
Então maxlength
é ignorado <input type="number">
pelo design.
Dependendo de suas necessidades, você pode usar o min
e max
atributos como Inon sugeriu em seu / sua resposta (NB: isto só irá definir um intervalo restrito, não o comprimento de caracteres real do valor, embora -9.999-9999 cobrirá toda 0-4 dígitos) ou você pode usar uma entrada de texto regular e aplicar a validação no campo com o novo pattern
atributo:
<input type="text" pattern="\d*" maxlength="4">
type="number"
é um novo tipo da especificação HTML 5. Se o navegador que você está testando em não reconhecertype="number"
que irá tratá-lo comotype="text"
que não respeitam omaxlength
atributo. Isso pode explicar o comportamento que você está vendo.type=number
entrada definindo omax
atributo. Este atributo restringe apenas o número escolhido pelo botão giratório da entrada.\d*
aqui?regex
e o padrão são incrivelmente criativos. Mas no celular, não é diferenteAndroid
ouiOS
, é umatext
entrada, por isso causa um mau resultadoUX
.O comprimento máximo não funcionará
<input type="number"
da melhor maneira que sei é usaroninput
event para limitar o comprimento máximo . Por favor, veja o código abaixo.fonte
||0/1
oninput="this.value=this.value.slice(0,this.maxLength)"
devem trabalhar<input type="number">
stackoverflow.com/questions/18510845/…Muitos caras postaram
onKeyDown()
eventos que não estão funcionando , ou seja, você não pode excluir quando atingir o limite. Então, em vez deonKeyDown()
usaronKeyPress()
e funciona perfeitamente bem.Abaixo está o código de trabalho:
fonte
number
tipo de entradaEu tenho duas maneiras para você fazer isso
Primeiro: use
type="tel"
, funcionará comotype="number"
em dispositivos móveis e aceite o comprimento máximo:Segundo: use um pouco de JavaScript:
fonte
Você pode usar os atributos min e max .
O código a seguir faz o mesmo:
fonte
9999
o usuário pode digitar manualmente em um número que exceda esse comprimento.Altere seu tipo de entrada para texto e use o evento "oninput" para chamar a função:
Agora use Javascript Regex para filtrar a entrada do usuário e limitá-la apenas a números:
Demo: https://codepen.io/aslami/pen/GdPvRY
fonte
Certa vez, entrei no mesmo problema e encontrei esta solução com relação às minhas necessidades. Pode ajudar Alguém.
Happy Coding :)
fonte
Você pode tentar isso também para entrada numérica com restrição de comprimento
fonte
tel
entrada será validada automaticamente como tal e, em alguns casos estranhos, os primeiros0
s serão alterados para1
s.DEMO - JSFIDDLE
fonte
Aqui está minha solução com jQuery ... Você precisa adicionar maxlength ao seu tipo de entrada = número
E manipule copiar e colar:
Espero que ajude alguém.
fonte
this.value = this.value.slice(0, this.maxLength);
você acha que isso tem algum problema? Eu não encontrei nenhum até agora. Também abrange texto colado.Na minha experiência, a maioria dos problemas em que as pessoas perguntam por que
maxlength
é ignorado é porque o usuário pode inserir mais do que o número "permitido" de caracteres.Como outros comentários afirmaram,
type="number"
entradas não têm ummaxlength
atributo e, em vez disso, ter ummin
emax
atributo.Para que o campo limite o número de caracteres que podem ser inseridos, permitindo que o usuário esteja ciente disso antes do envio do formulário (o navegador deve identificar o valor> max, caso contrário), você precisará (por enquanto, pelo menos) adicionar um ouvinte para o campo.
Aqui está uma solução que eu usei no passado: http://codepen.io/wuori/pen/LNyYBM
fonte
Sei que já existe uma resposta, mas se você deseja que sua entrada se comporte exatamente como o
maxlength
atributo ou o mais próximo possível, use o seguinte código:fonte
O Chrome (tecnicamente, Blink) não implementará maxlength para
<input type="number">
.A especificação HTML5 diz que maxlength é aplicável apenas aos tipos de texto, URL, email, pesquisa, tel e senha.
fonte
A solução absoluta que tentei recentemente é:
fonte
Vou fazer isso rápido e fácil de entender!
Em vez de maxlength para
type='number'
(maxlength deve definir a quantidade máxima de letras para uma string em umtext
tipo), usemin=''
emax=''
.Felicidades
fonte
<input type="number">
é exatamente isso ... uma entrada numérica (embora não convertida de uma string para flutuar via Javascript).Meu palpite, ele não restringe os caracteres na entrada de teclas
maxLength
ou o seu usuário pode ficar preso em uma "armadilha de teclas" se esquecerem um decimal no início (tente colocar um.
no índice1
quando um<input type"text">
atributo "maxLength" já tiver sido atingido ) No entanto, ele será validado no envio do formulário se você definir ummax
atributo.Se você estiver tentando restringir / validar um número de telefone, use o
type="tel"
atributo / valor. Ele obedece aomaxLength
attr e exibe apenas o teclado numérico do celular (em navegadores modernos) e você pode restringir a entrada a um padrão (ou sejapattern="[0-9]{10}"
).fonte
Para usuários do React,
Basta substituir 10 pelo seu requisito de comprimento máximo
fonte
maxlenght - texto do tipo de entrada
usando jQuery:
maxlenght - número do tipo de entrada
JS
HTML
fonte