Dans mes formulaires, j'aimerais utiliser les nouveaux types de formulaires HTML5, par exemple <input type="url" />
( plus d'infos sur les types ici ).
Le problème, c'est que Chrome veut être super utile et valider ces éléments pour moi, sauf qu'il est nul à ce jeu-là. Si la validation intégrée échoue, il n'y a pas de message ou d'indication autre que l'élément qui reçoit le focus. Je pré-remplit les éléments URL avec "http://"
Ainsi, ma propre validation personnalisée traite ces valeurs comme des chaînes vides, mais Chrome rejette cette idée. Si je pouvais modifier ses règles de validation, cela fonctionnerait également.
Je sais que je pourrais juste revenir à l'utilisation de type="text"
mais je veux bénéficier des améliorations que l'utilisation de ces nouveaux types offre (par exemple, il passe automatiquement à une disposition de clavier personnalisée sur les appareils mobiles) :
Donc, Y a-t-il un moyen de désactiver ou de personnaliser la validation automatique ?
8 votes
Le brouillon de la spécification HTML 5.1 mentionne une
inputmode
attribut qui - si je comprends bien ce que je lis - peut être utilisé pour spécifier quel type de clavier doit être proposé à l'utilisateur lorsqu'il interagit avec le champ, sans impliquant également toute règle de validation. À l'avenir, l'utilisation de l'optioninputmode
au lieu de l'attributtype
L'attribut sera probablement la bonne solution à ce problème - mais pas encore.0 votes
@MarkAmery Bien qu'il ne serait pas trop difficile d'obtenir le futur maintenant :
$('[inputmode]').each(function () { this.attr({type: this.attr('inputmode'), novalidate: true}) });
1 votes
@MarnenLaibow-Koser Bien que ce que vous avez décrit fonctionne si tout ce que vous voulez faire est de désactiver la validation (comme spécifié par l'auteur de la question), cela n'aboutit pas tout à fait au même résultat que
inputmode
serait. En procédant comme vous le faites, vous ne pouvez toujours pas (par exemple) lire les valeurs non numériques que l'utilisateur tape dans un champ de saisie de typenumber
. Par exemple, essayez de taper quelque chose de non numérique dans la zone de texte de la page ce violon et en cliquant sur le bouton.0 votes
@MarkAmery Intéressant. Est-ce que c'est parce que
<input type='number'>
n'accepte pas du tout les valeurs non numériques ?0 votes
@MarnenLaibow-Koser Je suppose que oui. La réponse acceptée sur cette question sur le problème inclut un lien vers la spécification qui, selon le répondant, impose ce comportement.
0 votes
Existe-t-il un moyen de désactiver la validation pour une seule balise de saisie ?