Bonjour à tous !
Voici mon souci : il s'agit de traduire un texte d'une langue source vers une ou plusieurs langue cibles.
La langue source doit être unique, c'est donc une list :
Le test sur la variable php $source est là pour qu'après soumission du formulaire, la valeur sélectionnée elle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <select name="source" onChange="activerCibles(this.form, 'cibles[]', this.value)"> <option value="francais"<?php if($source =='francais') echo 'selected="selected"';?>> Français</option> <option value="italien"<?php if($source == 'italien') echo 'selected="selected"';?>> Italien</option> <option value="anglais"<?php if($source == 'anglais') echo 'selected="selected"';?>> Anglais</option> <option value="allemand"<?php if($source == 'allemand') echo 'selected="selected"';?>> Allemand</option> <option value="portugais"<?php if($source == 'portugais') echo 'selected="selected"';?>> Portugais</option> <option value="espagnol"<?php if($source == 'espagnol') echo 'selected="selected"';?>> Espagnol</option> </select>
Les langues cibles peuvent être multiples, ce sont donc des checkbox :
La fonction "Compter(this.form.nb_mots.value,this.form)" est une fonction Javascript qui permet de compter le nombre de jours nécessaires à la traduction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <label><input type="checkbox" name="cibles[]" value="francais" <?php if(preg_match('/francais/', $liste_cibles)==true) echo 'checked="checked"';?> onClick="Compter(this.form.nb_mots.value,this.form)"/>Français</label> <label><input type="checkbox" name="cibles[]" value="anglais" <?php if(preg_match('/anglais/', $liste_cibles)==true) echo 'checked="checked"';?> onClick="Compter(this.form.nb_mots.value,this.form)"/>Anglais</label> <label><input type="checkbox" name="cibles[]" value="italien" <?php if(preg_match('/italien/', $liste_cibles)==true) echo 'checked="checked"';?> onClick="Compter(this.form.nb_mots.value,this.form)"/>Italien</label> <label><input type="checkbox" name="cibles[]" value="portugais" <?php if(preg_match('/portugais/', $liste_cibles)==true) echo 'checked="checked"';?> onClick="Compter(this.form.nb_mots.value,this.form)"/>Portugais</label> <label><input type="checkbox" name="cibles[]" value="espagnol" <?php if(preg_match('/espagnol/', $liste_cibles)==true) echo 'checked="checked"';?> onClick="Compter(this.form.nb_mots.value,this.form)"/>Espagnol</label> <label><input type="checkbox" name="cibles[]" value="allemand" <?php if(preg_match('/allemand/', $liste_cibles)==true) echo 'checked="checked"';?> onClick="Compter(this.form.nb_mots.value,this.form)"/>Allemand</label>
Cependant il y a plusieurs contraintes :
- la langue source et la langue cible ne peuvent être identiques. Pour l'instant je fais ce contrôle en php à la validation du formulaire. Mais étant données les contraintes suivantes, je souhaiterais le faire en Javascript.
- j'ai des combinaisons de langues sources/cibles définies :
FR vers (it, angl, esp, all, port)
(it, angl, esp, all, port) vers FR
Je souhaiterais donc :
- au tout premier affichage du formulaire, la langue source "francais" est sélectionnée je souhaite donc que dans les langues sources :
- le francais soit grisé et non sélectionnable
- les autres langues (it, angl, esp, all, port) sont dipsonibles et cliquables
- quand on sélectionne le français en langue source :
- le francais est grisé et non sélectionnable
- les autres langues (it, angl, esp, all, port) sont dipsonibles et cliquables
- quand on sélectionne une des langues (it, angl, esp, all, port) en langue source
- le francais est dipsonibles et cliquables
- les autres langues (it, angl, esp, all, port) sont grisés et non sélectionnables
J'avais fait un test avec la fonction "activerCibles(this.form, 'cibles[]', this.value)" que vous voyez sur le onChange de ma liste, mais sans succès.
Voici le détail de cette fonction :
Pourriez-vous m'aider ?
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 function activerCibles(form,inputName,source) { switch (source) { case 'francais': form.cibles['francais'].disabled='true'; form.cibles['italien'].disabled='false'; form.cibles['anglais'].disabled='false'; form.cibles['espagnol'].disabled='false'; form.cibles['allemand'].disabled='false'; form.cibles['portugais'].disabled='false'; break; case 'italien': case 'anglais': case 'espagnol': case 'allemand': case 'portugais': form.cibles['francais'].disabled='false'; form.cibles['italien'].disabled='true'; form.cibles['anglais'].disabled='true'; form.cibles['espagnol'].disabled='true'; form.cibles['allemand'].disabled='true'; form.cibles['portugais'].disabled='true'; break; } var inputs = form.elements[inputName]; for (var i = 0; i < inputs.length; i++) { var input = inputs; alert(input.value); if (input.value == source) { input.disabled = true; input.checked = true; } else { input.disabled = false; } } }
Merci beaucoup
Partager