Nei miei moduli, vorrei utilizzare i nuovi tipi di modulo HTML5, ad esempio <input type="url" />
( maggiori informazioni sui tipi qui ).
Il problema è che Chrome vuole essere super utile e convalidare questi elementi per me, tranne per il fatto che fa schifo. Se fallisce la convalida integrata, non c'è nessun messaggio o indicazione oltre all'elemento che ottiene lo stato attivo. Ricompilare gli elementi URL con "http://"
, quindi la mia convalida personalizzata tratta questi valori come stringhe vuote, tuttavia Chrome lo rifiuta. Se potessi cambiare le sue regole di validazione, anche questo funzionerebbe.
So che potrei semplicemente tornare all'utilizzo type="text"
ma voglio i bei miglioramenti usando queste nuove offerte di tipi (ad esempio: passa automaticamente a un layout di tastiera personalizzato sui dispositivi mobili):
Quindi, c'è un modo per disattivare o personalizzare la convalida automatica?
$('[inputmode]').each(function () { this.attr({type: this.attr('inputmode'), novalidate: true}) });
inputmode
. Facendo a modo tuo, non puoi ancora (ad esempio) leggere valori non numerici che l'utente digita in una casella di input di tipo number
. Ad esempio, prova a digitare qualcosa di non numerico nella casella di testo in questo violino e fai clic sul pulsante.
<input type='number'>
non accetta affatto valori non numerici?
inputmode
attributo che, se capisco cosa ho letto correttamente, può essere usato per specificare quale tipo di tastiera dovrebbe essere offerto all'utente quando interagisce con il campo, senza implicare alcuna regola di validazione. Ad un certo punto in futuro, l'utilizzoinputmode
dell'attributo anzichétype
dell'attributo sarà probabilmente la soluzione corretta a questo problema, ma non ancora.