Activer/désactiver des checkbox
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 :
Code:
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> |
Le test sur la variable php $source est là pour qu'après soumission du formulaire, la valeur sélectionnée elle
Les langues cibles peuvent être multiples, ce sont donc des checkbox :
Code:
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> |
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.
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 :
Code:
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;
}
}
} |
Pourriez-vous m'aider ?
Merci beaucoup