- Les tableaux sont inutiles (avec des labels, on peut taper son texte en cliquant sur le titre du champ, s'mieux) surtout pour une page aussi simple
- Ajoute un élément permettant de savoir que le champ est obligatoire, je verrais bien un 'class="required"' sur chaque "input" obligatoire.
- Ce qui permet de faire un JS tout con, du type
function checkRequiredInputs() {
var validForm = true;
var inputs = document.getElementsByTagName('INPUT');
for(var i=inputs.length-1; i>=0; --i) {
inputs[i].style.border = "";
if(inputs[i].className.indexOf("required" ) != -1 && inputs[i].value=="" ) {
inputs[i].style.border="2px solid red";
validForm = false;
}
}
return validForm;
} |
testé sous Firefox en vitesse, fonctionne
Cette fonction:
- Encadre en rouge les champs obligatoires non remplis (normalement )
- retourne "true" si tous les champs obligatoire sont remplis, "false" dans les autres cas
Sachant que ce genre de trucs sert uniquement à améliorer la vie du client:
- Il ne faut pas que ça sorte une popup ou autre truc à la con, ça lourde
- Garde en mémoire que ce n'est pas une vérification 'réelle': c'est très facile de la désactiver ou d'envoyer des données autrement => tu DOIS effectuer une validation complète côté serveur.
Pour finir, charge à toi de l'améliorer, tu peux par exemple:
- utiliser des classes pour manipuler les styles au lieu des styles inline, c'est plus propre
- enregistrer les noms des champs invalides pour en faire la liste
- gérer les champs non textuels (selects par exemple)
edit: erreur de syntaxe
re-edit: Opera ne supporte pas "style.borderColor", et IE merde lamentablement mais je sais pas pourquoi
re-re-edit: la remise à 0 des bordures (inputs[i].style.border="" ) est comprise par MSIE comme une demande de supprimer les bordures
Donc faut se démerder pour extraire et conserver quelque part la bordure par défaut, pour pouvoir la remettre
Faut passer par currentStyle.border pour MSIE et getComputedStyle().border pour le reste, sauf Safari qui pige aucun des deux et peut aller se faire foutre
Message édité par masklinn le 06-09-2005 à 22:11:38
---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody