Dans mes formulaires, j'aimerais utiliser les nouveaux types de formulaires HTML5, par exemple <input type="url" />
( plus d'informations sur les types ici ).
Le problème est que Chrome veut être super utile et valider ces éléments pour moi, sauf qu'il est nul. S'il échoue à la validation intégrée, il n'y a aucun message ou indication autre que l'élément obtenant le focus. Je préremplit les éléments URL avec "http://"
, et donc ma propre validation personnalisée traite simplement ces valeurs comme des chaînes vides, mais Chrome rejette cela. Si je pouvais changer ses règles de validation, cela fonctionnerait aussi.
Je sais que je pourrais simplement revenir à l'utilisation, type="text"
mais je veux les belles améliorations en utilisant ces nouveaux types d'offres (par exemple: il passe automatiquement à une disposition de clavier personnalisée sur les appareils mobiles):
Alors, existe-t-il un moyen de désactiver ou de personnaliser la validation automatique?
$('[inputmode]').each(function () { this.attr({type: this.attr('inputmode'), novalidate: true}) });
inputmode
ferait. En faisant les choses à votre façon, vous ne pouvez toujours pas (par exemple) lire des valeurs non numériques que l'utilisateur tape dans une zone de saisie de type number
. Par exemple, essayez de taper quelque chose de non numérique dans la zone de texte de ce violon et de cliquer sur le bouton.
<input type='number'>
n'accepte pas du tout les valeurs non numériques?
inputmode
attribut qui, si je comprends bien ce que j'ai lu, peut être utilisé pour spécifier le type de clavier à offrir à l'utilisateur lorsqu'il interagit avec le champ, sans impliquer également de règles de validation. À un certain moment dans le futur, l'utilisation de l'inputmode
attribut au lieu de l'type
attribut sera probablement la bonne solution à ce problème - mais pas encore.