Nos meus formulários, eu gostaria de usar os novos tipos de formulário HTML5, por exemplo <input type="url" />
( mais informações sobre os tipos aqui ).
O problema é que o Chrome quer ser super útil e validar esses elementos para mim, exceto que é uma porcaria. Se falhar na validação interna, não há outra mensagem ou indicação além do elemento que está recebendo o foco. Eu preenchei elementos de URL com "http://"
, e assim minha própria validação personalizada trata esses valores como cadeias de caracteres vazias, mas o Chrome rejeita isso. Se eu pudesse mudar suas regras de validação, isso também funcionaria.
Sei que poderia voltar a usar, type="text"
mas quero as boas melhorias usando esses novos tipos de ofertas (por exemplo: ele muda automaticamente para um layout de teclado personalizado em dispositivos móveis):
Então, existe uma maneira de desativar ou personalizar a validação automática?
$('[inputmode]').each(function () { this.attr({type: this.attr('inputmode'), novalidate: true}) });
inputmode
seria. Fazendo as coisas do seu jeito, você ainda não pode (por exemplo) ler valores não numéricos que o usuário digita em uma caixa de entrada do tipo number
. Por exemplo, tente digitar algo não numérico na caixa de texto deste violino e clicar no botão.
<input type='number'>
ocorre porque não aceita valores não numéricos?
inputmode
atributo que - se eu estiver entendendo o que li corretamente - pode ser usado para especificar que tipo de teclado deve ser oferecido ao usuário quando ele interagir com o campo, sem também implicar regras de validação. Em algum momento no futuro, usar oinputmode
atributo em vez dotype
atributo provavelmente será a solução correta para esse problema - mas ainda não.