Page 1 sur 1

[JQUERY]Contrôle de formulaire dynamique

Posté : 02 juil. 2010, 14:04
par albius
Bonjour,

J'ai un formulaire généré dynamiquement. Les noms des champs reviennent à
input id="cout[1]" ... input id="cout[2] etc...
J'aimerais toutefois vérifier si au moins l'un des champs n'est pas vide avant l'envoie du formulaire.

Code : Tout sélectionner

if($('input[name^=cout]').val()!=""){ ... } else{ ... };
Je n'obtiens qu'une seule valeur avec ce script. J'ai donc pensé à l'inclure dans une boucle. Mais si condition est exacte, je ne vais pas à chaque itération envoyer le formulaire:

Code : Tout sélectionner

$.post("repart_et_tva/treatmentCompta.php", $("#formCompta").serialize(), function(data){ ... if(data == ""){ $("#content").fadeOut('normal', function(){ ... }
Comment puis-je faire alors ?
merci,

Re: Contrôle de formulaire dynamique

Posté : 02 juil. 2010, 18:17
par AB
Je comprend rien à ton code, c'est une lib ?

Sinon sur le principe tu peux faire

var temoin = false;

boucle : foreach ... { if (champ non vide) temoin = true;}

if temoin = true -> au moins un champ est rempli -> envoi du formulaire.

Re: Contrôle de formulaire dynamique

Posté : 05 juil. 2010, 17:26
par albius
Bonjour,

Oui, j'ai oublié de préciser qu'il s'agit de jquery... J'avais également pensé à me servir d'une var témoin, et voici ce que j'ai écris (après modification du premier code)

Code : Tout sélectionner

$(function(){ $("#formCompta").submit(function(){ var temoin = true // On vérifie si au moins un champs a été renseigné $("input[name^='cout']").each(function(i, champs){ if($(champs).val() == ""){ temoin = true; return false; } else{ temoin = false; } }); if(temoin == true){ $("#content").append('not Ok!'); } else{ $("#content").append('it\'s Ok!'); } return false; }); });
Mais ce code ne répond pas précisément à la demande. 3 cas possibles:
Si aucun des champs n'est rempli, j'ai bien 'not ok!' qui apparaît
Si tous les champs sont remplis, 'its ok!'
Mais si l'un des champs n'est pas rempli, c'est 'not ok!' qui est lu. Or, ce n'est pas bon, puisque c'est un champs minimum qui doit être renseigné pour que cela puisse être valable. Et donc le formulaire envoyé.
Il y a quelque chose qui m'échappe encore...
merci,

Re: Contrôle de formulaire dynamique

Posté : 05 juil. 2010, 19:42
par AB
Il y a quelque chose qui m'échappe encore...
merci,
Je t'ai donné la (une) bonne méthode pour faire ce que tu demande... Essaies d'abord de la tester avant de faire autre chose qui ne fonctionne pas :roll:
Notamment dans ma boucle, il n'y a pas de else...

Re: [JQUERY]Contrôle de formulaire dynamique

Posté : 06 juil. 2010, 16:50
par albius
Bonjour,
Notamment dans ma boucle, il n'y a pas de else...
Justement, c'est cela que je ne comprends pas... Pourquoi dès lors que l'on veut intégrer une autre condition, les résultats ne sont plus les mêmes ?
merci,

Re: [JQUERY]Contrôle de formulaire dynamique

Posté : 06 juil. 2010, 18:27
par AB
Parce que c'est l'algo (la logique du code) qui le demande pour ce que tu veux faire !

La bonne formule est :

Code : Tout sélectionner

var temoin = false; boucle : foreach ... { if (champ non vide) temoin = true;}
Si je fais :

Code : Tout sélectionner

var temoin = false; boucle : foreach ... { if (champ non vide) temoin = true; else temoin = false}
Le premier champ non vide va retourner temoin = true mais si le dernier champ testé dans la boucle est vide alors temoin = false et le résulat ne sera pas bon. Donc dans cet algo il ne faut pas de else. Tu comprends ?

Re: [JQUERY]Contrôle de formulaire dynamique

Posté : 07 juil. 2010, 09:14
par albius
C'est la conclusion sur laquelle j'avais fini par être arrivé. Merci bien.