11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour a tous,

Voila je me met progressivement au javascript, et j'ai actuellement un problème de débutant Smiley smile

voici mon code html :



<form name="form" action="index.php?action=bddtest&amp;Valid=Oui" method="post">

....

Nom : <input type="text" name="Nom" size=15 value="Entrez Nom" /><br />
Mail : <input type="text" name="Mail" size=15 value="Entrez Mail" /><br /> 

<input type="button" Value="Ajouter" onClick="Ajouter(this.form)" />

....

<input type="hidden" value="<?php echo $a; ?>" id="bouh" name="bouh" />

....

</form>


et voici mon JS :





function Ajouter(form) {
                        
        if(form.Nom.value != "" && form.Mail.value != "" && form.Nom.value != "Entrez Nom" && form.Mail.value != "Entrez Mail") {
               var o=new Option(form.Mail.value,form.Nom.value);
               form.liste.options[form.liste.options.length]=o;

	       build();

        } else {
               alert("Vous devez remplir tous les champs");
        }
}

function build() {
/*var ary = new Array(), opts = document.form.liste.options;
	for (i=0; i<opts.length; i++) {
	     ary[ary.length] = opts[i].value;
	}*/

	alert("test");
	document.form.bouh.value = 'BOUHHH';
}


Voila mon probleme etant que ma fonction ajouter et build ce lancent (le alert marche) mais ma ligne "document.form.bouh.value = 'BOUHHH';" elle ne marche pas, mon champ hidden garde tjrs la meme "value".

Comme je tourne un peu en rond je fais appel a vous

PS: le code mit en commentaire sera la vrai contenu du champ hidden une fois mon probleme résolu Smiley ohwell [/i]
Modifié par Traxyl2en1 (31 Jul 2009 - 11:25)
Salut,

Pourvu qu'on rajoute le <select name="liste"> manquant dans ton form, ton code fonctionne. Je te conseille de mettre une page en ligne où l'on peut constater le problème.
Alors la je suis dubitatif Smiley eek

ta page fais exactement ce que je souhaite
mais qd je test en ligne "ma" page, j'obtiens le même résultat erroné.

Voici mon code avec ce qu'il manquait dans le précèdent :


<form name="form" action="index.php?action=bddtest&amp;Valid=Oui" method="post">

	Nom : <input type="text" name="Nom" size=15 value="Entrez Nom" /><br />
        Mail : <input type="text" name="Mail" size=15 value="Entrez Mail" /><br /> 
        <input type="button" Value="Ajouter" onClick="Ajouter(this.form)" />


        <select name="liste" id="liste" size=7 onChange="LigneSelect('Mail : '+this.options[this.selectedIndex].text+'\nNom : '+this.options[this.selectedIndex].value)">

<?php 
$a = "";
while($ReponseSqlBDDTest = mysql_fetch_array($sqlBDDTest)) {
	echo '<option value="' . $ReponseSqlBDDTest["Prenom"] . ' ' . $ReponseSqlBDDTest["Nom"] . '">' . $ReponseSqlBDDTest["Mail"] . '</option>';
$a .= $ReponseSqlBDDTest["Prenom"] . "=" . $ReponseSqlBDDTest["Mail"] . ",";
}
								
?>
</select><br />

<td id="Qui" colspan="2" height="20"></td>

<input type="button" value="Supprimer l'adresse mail" onClick="Supprimer(this.form.liste)" />
<input type="button" value="Supprimer tout" onClick="SupprimerTout(this.form.liste)" />


<input type="submit" value="Mettre à jour" name="MAJ" />
<input type="hidden" value="<?php echo $a; ?>" id="bouh" name="bouh" />

</form>


et voici le JS entier :


<script language="javascript" type="text/javascript">
							
function Ajouter(form) {
                        
         if(form.Nom.value != "" && form.Mail.value != "" && form.Nom.value != "Entrez Nom" && form.Mail.value != "Entrez Mail") {
        var o=new Option(form.Mail.value,form.Nom.value);
        form.liste.options[form.liste.options.length]=o;
	build();
    } else {
        alert("Vous devez remplir tous les champs");
    }
}
function Supprimer(list) {
    if (list.options.selectedIndex>=0) {
        list.options[list.options.selectedIndex]=null;
     } else {
        alert("Suppression impossible : aucune ligne sélectionnée");
    }
}
                    
function SupprimerTout(list) {
      list.options.length=0;
 }
function LigneSelect(text) {
       document.getElementById('Qui').innerHTML = text;
}
						
function build() {
	/*var ary = new Array(), opts = document.form.liste.options;
	for (i=0; i<opts.length; i++) {
	ary[ary.length] = opts[i].value;
	}*/
	alert("test");
	document.form.bouh.value = 'BOUHHH';
}
                   
</script>


Je n'avais pas vu l'utilité de mettre mon select avant car je ne voyais pas de rapport entre mon probleme et lui, meacoulpa si je me suis trompé ^^
[/i]
Modifié par Traxyl2en1 (31 Jul 2009 - 12:29)
Ça marche toujours. Au risque de me répéter, une page en ligne est la seule garantie qu'on travaille, toi et nous, sur le même code.
Merci pour ton aide, et je pense savoir d'où viens le problème:

peux-tu mettre le champ "<input type="text" value="champ caché" id="bouh" name="bouh" /> "

en hidden dans ta page; car lorsque je met comme toi mon champ en "text" j'obtiens le bon résultat mais en hidden cela ne marche pas (je fais mes en test ligne ; ))
Modifié par Traxyl2en1 (31 Jul 2009 - 13:08)
a écrit :
peux-tu mettre le champ [...] en hidden dans ta page;
Ça ne change rien (le contraire m'aurait vraiment surpris Smiley sweatdrop ), et tu peux faire la modif toi-même, la page n'est pas hébergée chez moi mais chez JS Bin : http://jsbin.com/ubico/edit/

Pourquoi ne veux-tu pas mettre toi-même ta page en ligne ? Ça serait vraiment plus simple...
Modifié par marcv (31 Jul 2009 - 13:08)
je travail actuellement sur le serveur de ma boite (je test en ligne mes scripts), donc donner les url de mes pages m'est impossible (interdit plutôt). Je ne connaissais pas ce site http://jsbin.com/ubico/edit/ merci pour le lien, effectivement ca sera surement plus simple pour moi (et toi) Smiley smile