Dans mon application Web, j'utilise une validation personnalisée pour les champs de mon formulaire. Dans le même formulaire, j'ai deux boutons : l'un pour soumettre le formulaire et l'autre pour l'annuler ou le réinitialiser.
J'utilise principalement Safari comme navigateur par défaut. Maintenant que Safari 5 est sorti, mon bouton d'annulation/réinitialisation ne fonctionne plus. Chaque fois que j'ai appuyé sur le bouton de réinitialisation, le premier champ de mon formulaire a reçu le focus. Cependant, ce comportement est le même que celui de la validation de mon formulaire personnalisé. Lorsque j'ai essayé avec un autre navigateur, tout a bien fonctionné. Il devait s'agir d'un problème lié à Safari 5.
J'ai modifié un peu mon code Javascript et j'ai découvert que la ligne suivante causait le problème :
document.getElementById("somefield").required = true;
Pour être sûr que c'était vraiment le problème, j'ai créé un scénario de test :
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<form id="someform">
<label>Name:</label> <input type="text" id="name" required="true" /><br/>
<label>Car:</label> <input type="text" id="car" required="true" /><br/>
<br/>
<input type="submit" id="btnsubmit" value="Submit!" />
</form>
</body>
</html>
Ce que je m'attendais à voir arriver est arrivé. Le premier champ "nom" a obtenu le focus automatiquement.
Quelqu'un d'autre est tombé sur ce problème ?
2 votes
Maintenant, il n'est pas nécessaire de définir l'attribut requis à true. Par exemple : <input type="text" id="name" required="true" /> et <input type="text" id="name" required /> c'est la même chose.
0 votes
C'est vrai, c'est une mauvaise habitude de ma part, quand j'avais l'habitude de coder en XHTML... Mais est-ce que tous les navigateurs modernes supportent cette balise sans ="required" ? Je crois que Safari ne le fait pas...
0 votes
Quel est le comportement réel et attendu ?
0 votes
En fonction de blog.grayghostvisuals.com/html/using-html-required-attribute "Si l'attribut est présent, sa valeur doit être soit la chaîne vide, soit une valeur qui correspond au nom canonique de l'attribut sans tenir compte des majuscules et des minuscules, sans espace avant ou arrière. pour les attributs "booléens", donc au lieu de required="true", on devrait avoir required="required" ou juste required