Problème de validation d'un formulaire avec prototype

6 réponses - 2783 vues
Salut, J'ai un petit pb avec le script suivant: [ici](http://tetlaw.id.au/view/javascript/really-easy-field-validation "Lien")
Le problème, c'est que lorsque je veux valider mes formulaires avec des radio ou des checkbox, je n'arrive pas à les valider car ils sont dans des tableau... en gros:
**Incorrect**
**Code **
``<table>
<tr>
<td>
<input type="radio" name="f6" id="f6-m" value="0" />Homme
</td>

<td>
<input type="radio" name="f6" id="f6-f" value="1" class="validate-one-required" />Femme
</td>

</tr>
</table>``
**Correcte**
**Code **
``<input type="radio" name="f6" id="f6-m" value="0" />Homme
<br />

<input type="radio" name="f6" id="f6-f" value="1" class="validate-one-required" />Femme``
Or, je suis obligé d'avoir des tableaux (ou alors passer par des div/css mais bon ça me gave ^^) donc si possible j'aimerai savoir comment rentre la lib compatible avec des tableau pour les radio et les checkbox :)
Sinon une autre question toujours en rapport avec du js:
Est-ce que les champs caché par la valeur *style="display: none"* sont-ils pris en compte lors des contrôle JS ?
J'ai l'impression que non :aie:
Bon, j'ai trouvé un solution mais c'est méga harcodre et super crade :( Voila mon code html:
**Code **
``
<ul class="multi">

<span class="multis"><input id="mydomaine0" name="mydomaine[]" value="2" type="radio"> DIT</span>

<span class="multis"><input id="mydomaine1" name="mydomaine[]" value="4" type="radio"> DS</span>

<br clear="all"><br clear="all">
<span class="multis"><input id="mydomaine2" name="mydomaine[]" value="1" type="radio"> PIT</span>

<span class="multis"><input id="mydomaine3" name="mydomaine[]" value="3" type="radio"> PSP</span>

<br clear="all"><br clear="all">
<div></div><input id="mydomaine4" name="mydomaine[]" value="5" class="validate-one-required" type="radio"> Wii !
</ul>

``
la solution c'est de mettre un element vide devant comme ici le <div></div>
Le fichier css
**Code **
``ul.multi
{
float:left;
width:550px;
padding:4px 4px 4px 4px;
margin: 0;
list-style-type:none;
/* border: 1px solid #CCCFD3; */
font-size: 0.85em;
line-height: 1.20em;
}
.multis
{
float:left;
width:275px;
/* border: 1px solid #0000FF; */
}``
Suite à quelque petite recherche j'ai trouvé un truc plus propre et plus générique: Il suffit de remplacer ça
**Code **
`` ['validate-one-required', 'Please select one of the above options.', function (v,elm) {
var p = elm.parentNode;
var options = p.getElementsByTagName('INPUT');
return $A(options).any(function(elm) {
return $F(elm);
});
}]``
par
**Code **
``
['validate-one-required', 'Please select one of the above options.',
function (v,elm) {
var options = $$('input[name="'+elm.name+'"]');
return $A(options).any(function(elm) {
return $F(elm);
});
}]
``
Par contre comment le rendre full ajax ? Car actuellement le script passe par Onsubmit or j'aimerai bien pouvoir passer par ma requête générique Ajax
Merci :)
nup
héhé Bon déjà désolé pour le temps d'attente, mais je suis en plein déménagement en ce moment (= pas de temps + pas de net ..)
J'ai déjà essayer de me pencher sur le problème il y a déjà un moment de ça, sur une validation à la volée des champs.
Tu as p'tet trouvé quelques choses depuis le temps..
Tiens moi au courant!
lol ^^ Oui effectivement depuis le temps ;)
J'utilise donc ce bout de code qui au final est super générique:
**Code **
`` ['validate-one-required', 'Please select one of the above options.',
function (v,elm) {
var options = $$('input[name="'+elm.name+'"]');
return $A(options).any(function(elm) {
return $F(elm);
});
}] ``
Pour le rendre "full ajax", j'ai modifier un poil le code pour lors de la soumission il me lance une fonction qui exécute mon ajax et dans le formulaire j'ai ajouté ceci:
**Code **
``onSubmit="return false">``
Maintenant, j'ai un autre problème mais cette fois au niveau du placement du message d'erreur pour la validation de checkbox, qu'elle sont dans un tableau j'aurai le placer en dehors.
Je bloque là-dessus au cause du "parentNode"

(6 résultats)


Catégories


Tags


Liens