Bienvenue sur www.STUDENT-DESIGNER.com

Annonces


Forum

Forum Forum > Javascript / Xml / Ajax > [JS] ... has no properties

[JS] ... has no properties

Page : [1]
kalipka Ecrit le Mardi 4 Juillet 2006 à 00h10


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 :p
D'avance merci.

manu Ecrit le Mardi 4 Juillet 2006 à 11h32


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 ...

kalipka Ecrit le Mardi 4 Juillet 2006 à 16h58


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

manu Ecrit le Mardi 4 Juillet 2006 à 17h07


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 :D

kalipka Ecrit le Mardi 4 Juillet 2006 à 18h48


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 ^^

Page : [1]
Forum Forum > Javascript / Xml / Ajax > [JS] ... has no properties

Derniers inscrits