Bonjour,
J'utilise un script qui rafraîchit une liste déroulante après la saisie dans un formulaire placé dans un pop-up. Pour cela je clique sur un lien (situé dans ma page principale)appelé "Créer un contributeur absent de la liste" : cela m'ouvre un pop-up, je saisis dans le formulaire le nom d'un nouveau contributeur, je valide et la liste des contributeurs se met à jour dans ma page principale (sans rechargement de cette dernière).
Code de la page pop-up :
Code de la page principale :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 <script type="text/javascript"> function doc(nom){ if (document.getElementById) { return document.getElementById(nom); } } function valid() { value = doc('value').value; text = doc('text').value; opener.ajouter('nom', value, text); } </script> <title>Popup</title> </head> <body> <?php // requete pour chercher le prochain identifiant $requete="SELECT MAX(nummetier) AS nb FROM metier WHERE nummetier IN (SELECT nummetier FROM metier) ;"; $result=mysql_query($requete,$connexion); $ligne=mysql_fetch_array($result); $value = $ligne['nb']; $value = $value + 1; ?> <form action="" method="POST" onsubmit="valid();"> <p> <?php echo '<input type="hidden" name="value" id="value" value="'.$value.'" />'; ?> <br /> <input type="text" name="text" id="text" /> <br /> <input type="submit" value="Ajouter" />
Le script fonctionne. Dans mon code php, je vérifie que le champ input n'est pas vide de façon à éviter des insertions de données vides dans ma base
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 <script> function doc(nom) { if (document.getElementById) { return document.getElementById(nom); } } function ajouter(nom, value, text) { formulaire = doc(nom); // Recuperation des informations nb = formulaire.length; // On compte le nombre d'<option /> nouvel_element = new Option(text, value, false, true); // Creation // new Option(text, value, DefaultSelected, Selected); // * text = texte affiché dans la liste // * value = valeur de la liste à transmettre (facultatif) // * defaultSelected = transmettre true quand l'élément doit être l'élément sélectionné par défaut, sinon false (facultatif) // * Selected = transmettre true quand l'élément doit être sélectionné (facultatif) formulaire.options[nb] = nouvel_element; // Ajout } </script> <form action="update.php" method="POST"> <p><select name="nom" id="nom"> <option> value="..."</option> ... </form> <!-- ouvrir le popup --> <a href="popup.php" onclick="window.open(this.href, 'H', 'width=200, height=200'); return false;">Créer un contributeur absent de la liste</a>
(du style if (empty ($_POST['text']))
echo "Le champ nouveau contributeur est obligatoire <br/>"; ).
Le problème c'est qu'en cas de saisie vide dans la champ input, le script JavaScript s'effectue quand même et rapatrie une ligne "option value" vide dans la liste déroulante de ma page principale.
Comment faire en sorte que le script JavaScript ne se déclenche pas si l'utilisateur valide un champ input vide ? Merci d'avance de votre aide.
Partager