OVH Cloud OVH Cloud

boucle?

12 réponses
Avatar
VooDoo
Bonjour,
je vais une validation de formulaire en utilisant ce code:
if (( document.saisieinci.etataction[1].value != "Approuvée" )&&(
document.saisieinci.etat.value = "Soldée" )){
form_err += "Impossible de solder cette FIA, l\'action n°1 n\'est
toujours pas réalisée! ";}

comment puis-je faire cette validation pour des champs allant de:
etataction[1] à etataction[12]

merci pour votre aide
++
Voodoo

10 réponses

1 2
Avatar
VooDoo
Apparement il n'aime pas ca:
document.saisieinci.etataction[1].value

mon champ de formulaire est ecrit en php de la maniere suivant:
echo '<select name="etataction['.$i.']">'.....

quelqu'un peut m'eclairer??
Avatar
ASM
Apparement il n'aime pas ca:
document.saisieinci.etataction[1].value


document.forms['saisieinci'].elements['etataction[1]'].value

ou, à minima :

document.saisieinci['etataction[1]'].value

Avatar
VooDoo
Merci pour ta réponse, mais impossible de faire marcher ca:
function valider() {
var form_err = " "
for ( var i = 0 ; i < 6 ; i++) {
if (( document.saisieinci.['etataction[i]'].value != "Approuvée" )&&(
document.saisieinci.etat.value = "Soldée" )){
form_err += "Impossible de solder cette FIA";}
}
if ( form_err != " ") {
alert(form_err);
return false;
}
return true
}

j'ai essayé toutes les écritures possibles, mais rien ne marche!
une idée??
Avatar
ASM
Merci pour ta réponse, mais impossible de faire marcher ca:
function valider() {
var form_err = " "
for ( var i = 0 ; i < 6 ; i++) {
if (( document.saisieinci.['etataction[i]'].value != "Approuvée" )&&(


Le point après saisieinci remplaçant les 2 crochets, et faisant ici
double ou contre emploi, essayer :

if (( document.saisieinci['etataction[i]'].value != "Approuvée" ) &&

sinon : prendre la version longue.

document.saisieinci.etat.value = "Soldée" )){


( document.saisieinci.etat.value == "Soldée" )){

form_err += "Impossible de solder cette FIA";}
}
if ( form_err != " ") {
alert(form_err);
return false;
}
return true
}

j'ai essayé toutes les écritures possibles, mais rien ne marche!
une idée??


Le contrôle de l'égalité (la semblance) de 2 éléments se fait à l'aide
de = et non pas qui est le signe de l'égalité égalante (être)

La stricte égalité (semblalité) c'est == (les 2 trucs sont exxacquetement pareils les mêmes).

Ainsi, si on fait :

var truc = 123; // truc égale 123 (truc est 123)
var chose = '123';

alert(truc == chose) // renvoie 'true' : ils sont bien semblables

alert(truc === chose) // renvoie 'false' :
// ils sont pareils mais pas semblables
// un nombre et une chaîne (de caratères)

--
ASM

Avatar
VooDoo
Merci j'ai bien corrigé le ==,
par contre pour la boucle toujours pareil...
if (( document.saisieinci['etataction[i]'].value != "Approuvée" )&&(
document.saisieinci.etat.value == "Soldée" )){
je ne suis pas sur que i soit remplacé par sa valeur...
comment faire pour debugger le js?
merci bcp pour ton aide!
Avatar
ASM
Merci j'ai bien corrigé le ==,
par contre pour la boucle toujours pareil...
if (( document.saisieinci['etataction[i]'].value != "Approuvée" )&&(
document.saisieinci.etat.value == "Soldée" )){


je ne sais si c'est le maileur qui coupe les lignes ou si c'est toi
elles ne sont pas coupées où il faut

function valider() {
var form_err = " ";
var ok = 0; // special débugage
for (var i=0 ; i<6 ; i++)
{
OK = i; // pour débuggage
if (document.saisieinci['etataction['+i+']'].value != "Approuvée" &&
document.saisieinci.etat.value == "Soldée" )
{
form_err += "Impossible de solder cette FIA : "+
"etataction["+i+"]n";
}
}
if (form_err != " ")
{
alert(form_err);
return false;
}
alert('OK = '+OK); // débuggage
return true;
}

je ne suis pas sur que i soit remplacé par sa valeur...


Dans 'etataction[i]'
il ne l'est pas c'est certain.

'etataction[i]' est une chaîne de caractères inamovible

voir la correction + haut si elle répare

comment faire pour debugger le js?


cf dans corrigé

Mais ça ne nous dit pas si tu as vraiment dans ton html des éléments de
form qui soient nommés

name="etataction[0]"
name="etataction[1]"
...
name="etataction[5]"

--
ASM

Avatar
VooDoo
décidement.... c toujours pareil :(
ni OK ni form_err ne s'affiche.... je comprends plus rien :(
je ne vois vraiment pas ce qui cloche...

function valider() {
//alert('Message!!'); s'affiche si décommenté...
var form_err = " ";
var ok = 0; // special débugage
for (var i=0 ; i<6 ; i++)
{
OK = i; // pour débuggage
if (document.saisieinci['etataction['+i+']'].value != "Approuvée" &&
document.saisieinci.etat.value == "Soldée" )
{
form_err += "Impossible de solder cette FIA : "+
"etataction["+i+"]n";
}
}
if (form_err != " ")
{
alert(form_err);
return false;
}
alert('OK = '+OK); // débuggage
return true;
}


<form action="modules.php?op=modload&name=Incidents&file=inci-update"
method="post" name="saisieinci" onsubmit="return valider()">
....
<select name="etataction['.$i.']">'.....soit interpreté:
<select name="etataction[1]"><option value="">Select</option>.....

je ne vois vraiment ce qui cloche....
Avatar
ASM
décidement.... c toujours pareil :(


ni OK ne s'affiche


alors ça a bugué avant !
à mon idée : une histoire de ) dans la condition

if ( !(approuvé && soldé) )
ou identique
if ( !approuvé || !soldé )


alors la soluce longue :

function valider() {
var form_err = " ";
var approve = '', solde = '';
var ok = 0; // special débugage
for (var i=0 ; i<6 ; i++)
{
OK = i; // pour débuggage
approve = document.saisieinci.elements['etataction['+i+']'].value;
solde = document.saisieinci.etat.value;

if ("Approuvée" != approve || "Soldée" != solde)
{
form_err += "Impossible de solder cette FIA : "+
"etataction["+i+"]n";
}
}
if (form_err != " ")
{
alert(form_err);
return false;
}
alert('OK = '+OK); // débuggage
return true;
}


Tu sais que tu as un débugueur de JavaScript trés bien fait dans FireFox ?
menu : Outils / Console Javascript

Avatar
VooDoo
pas mieux.... mais j'ai installé firefox ;)
Erreur : document.saisieinci.elements["etataction[" + i + "]"] has no
properties
Fichier source :
http://intranet/modules.php?op=modload&name=Incidents&file=inci-modif&numint$
Ligne : 358

????????????

"ASM" a écrit dans le message
de news: 450ea415$0$5088$
décidement.... c toujours pareil :(

ni OK ne s'affiche


alors ça a bugué avant !
à mon idée : une histoire de ) dans la condition

if ( !(approuvé && soldé) )
ou identique
if ( !approuvé || !soldé )


alors la soluce longue :

function valider() {
var form_err = " ";
var approve = '', solde = '';
var ok = 0; // special débugage
for (var i=0 ; i<6 ; i++)
{
OK = i; // pour débuggage
approve = document.saisieinci.elements['etataction['+i+']'].value;
solde = document.saisieinci.etat.value;

if ("Approuvée" != approve || "Soldée" != solde)
{
form_err += "Impossible de solder cette FIA : "+
"etataction["+i+"]n";
}
}
if (form_err != " ")
{
alert(form_err);
return false;
}
alert('OK = '+OK); // débuggage
return true;
}


Tu sais que tu as un débugueur de JavaScript trés bien fait dans FireFox ?
menu : Outils / Console Javascript



Avatar
ASM
pas mieux.... mais j'ai installé firefox ;)
Erreur : document.saisieinci.elements["etataction[" + i + "]"] has no
properties


bon alors la très longue ?

document.forms['saisieinci'].elements['etataction['+i+']'].value

Mais il est aussi possible que ty n'aies pas un des éléments sur ta page ?

etataction[0]
etataction[1]
etataction[2]
etataction[3]
etataction[4]
etataction[5]

vérifier aussi que ce n'est pas écrit avec un espace qque part

etataction[ 3]

et pareil pour 'soldée' et 'approuvée' (accents et maj ?)

il vaudrait mieux faire :

function valider() {
var form_err = ' ';
for (var i=0 ; i<6 ; i++)
{
if(!(document.forms['saisieinci'] &&
document.forms['saisieinci'].elements['etataction['+i+']']))
{
alert('element etataction['+i+'] innexistant');
return false;
}
if(document.forms['saisieinci'].elements['etataction['+i+']'].value!='Approuvée'||

document.saisieinci.etat.value != 'Soldée')
form_err += "Impossible de solder cette FIA : etataction["+i+"]n";
}
if (form_err != " ")
{
alert(form_err);
return false;
}
return true;
}



Dis moi : ce sont bien des values de champs texte que tu essaies de
vérifier ?

1 2