2009-11-08 5 views
1

J'ai une fonction que je voudrais exécuter sur Change. Cela fonctionne très bien avec un a-tag. Mais quand je l'utilise sur une étiquette d'entrée, il dit simplement:javascript input field onchange provoque "n'est pas une fonction"

form.saveFile est pas une fonction

Cela fonctionne:

<a onclick="form.saveFile('fec056b774ffefa479c7dd3a632275cb','fec056b774ffefa479c7dd3a632275cb_filetest'); return false;" href="#">Upload file</a> 

Cela ne fonctionne pas:

<input onchange="form.saveFile('fec056b774ffefa479c7dd3a632275cb','fec056b774ffefa479c7dd3a632275cb_filetest');" id="fec056b774ffefa479c7dd3a632275cb_filetest" class="file" type="file" name="fec056b774ffefa479c7dd3a632275cb_filetest" accesskey="F"/> 

Les deux appels de la même forme form.saveFile(); fonction.

La forme variable est déclarée dans un fichier js compris comme ceci:

form = { 
    version: '1.0.0', 
    ...alot of functions... 
    saveFile : function(callback,p){ 
    ................. 
    } 
} 
+2

D'où vient la variable 'form'? Où l'avez-vous déclaré? –

+0

Veuillez publier un code html + javascript minimal qui reproduit le problème (à la fois le fonctionnement d'un onclick et de l'onchange d'entrée non fonctionnel). –

+0

J'ai posté 2 extraits HTML. Un travail et un ne fonctionne pas. un onclick fonctionne. mais onchange dit que la fonction est indéfinie. – jonaz

Répondre

3

form est un mot réservé dans un gestionnaire onchange. Renommez simplement votre variable et cela fonctionnera:

var frm = { 
    version: '1.0.0', 
    saveFile : function(callback,p){ 
    } 
}; 

<input onchange="frm.saveFile('fec056b774ffefa479c7dd3a632275cb','fec056b774ffefa479c7dd3a632275cb_filetest');" id="fec056b774ffefa479c7dd3a632275cb_filetest" class="file" type="file" name="fec056b774ffefa479c7dd3a632275cb_filetest" accesskey="F"/> 
0

ont besoin de plus d'informations. avez-vous essayé dans tous les navigateurs? ça devrait marcher. Si le texte a été modifié, une fois que le focus quitte la zone de texte onchange se produira. essayez d'utiliser alert() pour tester si la fonction est vraiment appelée. il pourrait y avoir quelque chose de mal avec votre fonction. J'espère que cela t'aides.

+0

J'ai essayé dans la plupart des navigateurs. Le premier était firefox. Alerte (1); à la fois a-tag et input-tag fonctionne bien. Mais je ne peux pas accéder à form.saveFile depuis l'entrée-onchange. Seulement à partir de a-onclick – jonaz

+0

essayez d'utiliser document.getElementById ('form_id'). Puisque les identifiants sont uniques, vous ne rencontrerez aucun problème en faisant référence aux éléments de la page HTML. –

1

Les formulaires intérieurs form font référence à cet élément spécifique form. Vous devez donc faire la distinction entre le form qui fait référence à l'élément form et votre variable form. Vous pouvez le faire en utilisant window.form si vous avez défini votre variable form dans la portée globale. Ou vous venez de le renommer.

Questions connexes