En mis formularios, me gustaría usar los nuevos tipos de formularios HTML5, por ejemplo <input type="url" />
( más información sobre los tipos aquí ).
El problema es que Chrome quiere ser muy útil y validar estos elementos para mí, excepto que es una mierda. Si falla la validación incorporada, no hay ningún mensaje o indicación que no sea el elemento que se enfoca. Prefiero los elementos URL con "http://"
, por lo que mi propia validación personalizada solo trata esos valores como cadenas vacías, sin embargo, Chrome lo rechaza. Si pudiera cambiar sus reglas de validación, eso también funcionaría.
Sé que podría volver a usar, type="text"
pero quiero las mejoras agradables con estos nuevos tipos de ofertas (por ejemplo: cambia automáticamente a un diseño de teclado personalizado en dispositivos móviles):
Entonces, ¿hay alguna manera de desactivar o personalizar la validación automática?
$('[inputmode]').each(function () { this.attr({type: this.attr('inputmode'), novalidate: true}) });
inputmode
haría. Al hacer las cosas a su manera, aún no puede (por ejemplo) leer valores no numéricos que el usuario escribe en un cuadro de entrada de tipo number
. Por ejemplo, intente escribir algo no numérico en el cuadro de texto en este violín y haga clic en el botón.
<input type='number'>
no acepta valores no numéricos en absoluto?
inputmode
atributo que, si entiendo lo que leo correctamente, se puede usar para especificar qué tipo de teclado se debe ofrecer al usuario cuando interactúa con el campo, sin implicar ninguna regla de validación. En algún momento en el futuro, usar elinputmode
atributo en lugar deltype
atributo probablemente será la solución correcta a este problema, pero aún no.