
Messages : 198
Grade : Super Modérateur
Statut : Hors ligne |
Bonjour,
J'ai mis en place un script Javascript tout simple pour griser des champs suivant que certains boutons radio sont cochés ou non... Bref. Voilà le code :
Code :
function griserDegriser(form) {
if(document.form.insertion[1].checked == true) {
document.form.image.disabled = true;
document.form.insertion_oui[0].disabled = true;
document.form.insertion_oui[1].disabled = true;
document.form.insertion_oui[0].checked = false;
document.form.insertion_oui[1].checked = false;
document.form.image.value = '';
}
if(document.form.insertion[1].checked == false) {
document.form.image.value = '';
document.form.insertion_oui[0].disabled = false;
document.form.insertion_oui[1].disabled = false;
if(document.form.insertion_oui[0].checked == true) {
document.form.image.disabled = false;
}
if(document.form.insertion_oui[0].checked == false) {
document.form.image.disabled = true;
}
}
}
J'appelle cette fonction de la manière suivante :
Code :
...onclick="griserDegriser(nom_formulaire);"...
Mon problème est que Firefox me renvoie une erreur me disant Citation :
document.form has no properties
On dirait en fait qu'il n'évalue pas le paramètre passé... j'ai bien essayé de créer une fonction -la même- sans paramètre en remplaçant 'form' par le nom d'un formulaire et tout marche !
Ce problème a l'air d'être assez répandu sur le NEt mais pas de solution proposée...
En espérant que tout le monde n'est pas parti en vacances 
D'avance merci.
|

Messages : 450
Grade : Administrateur
Statut : Hors ligne |
J'ai eu aussi ce soucis avec l'apercu des galeries dans les fiches. J'ai remplacé toutes les variables form par getElementById(form). Par contre il faut ajouter a la balise du formulaire un id identique a son name.
Code :
function griserDegriser(idForm) {
form=document.getElementById(idForm);
if(form.insertion[1].checked == true) {
form.image.disabled = true;
form.insertion_oui[0].disabled = true;
form.insertion_oui[1].disabled = true;
form.insertion_oui[0].checked = false;
form.insertion_oui[1].checked = false;
form.image.value = '';
}
if(form.insertion[1].checked == false) {
form.image.value = '';
form.insertion_oui[0].disabled = false;
form.insertion_oui[1].disabled = false;
if(form.insertion_oui[0].checked == true) {
form.image.disabled = false;
}
if(form.insertion_oui[0].checked == false) {
form.image.disabled = true;
}
}
}
Je n'ai pas la certitude que ca suffise mais essai 
Edit :
J'avais pas lu la fin, form peut etre une variable déja prise par JS, essai de faire la même fonction en changeant la variable form par formName, peut-etre que ca suffira ...
Edité par manu le 4 Juillet 2006 à 11h34 |

Messages : 198
Grade : Super Modérateur
Statut : Hors ligne |
Après bien des tests, j'ai fini par trouver...
Au moment de l'appel de la fonction il faut passer le paramètre entre guillemets et au sein de la fonction, accéder au formulaire par forms[form]. Aucune autre syntaxe ne marche avec des paramètres... Voilà 
Merci Manu pour ta réponse
|

Messages : 450
Grade : Administrateur
Statut : Hors ligne |
Ok je me suis encore enflammé dans des trucs a la noix alors que c'était tout bete !
Saleté de petites erreurs vicieuses
|

Messages : 198
Grade : Super Modérateur
Statut : Hors ligne |
Sur le fond c'était bien le même problème !
Il fallait accéder au formulaire et au champ par des tableaux Javascript prédéfinis donc tu as bien eu raison de t'enflammer
|