2010-12-04 4 views
1

J'ai une fonction JavaScript nommée 'mc_change'. De plus, j'ai une zone de texte dont l'événement le changement devrait appeler cette fonction JavaScriptjQuery javascript reliure et appel sortant

type d'entrée < = "text" id = "mc_val" onchange = "javascript: mc_change();"/>

Il ne fonctionne pas

Quelqu'un peut-il me suggérer normal ou même JavaScript jQuery?

Merci

Répondre

0

Votre exemple de script est parfaitement valide - il n'y a pas d'erreurs évidentes dans ce que vous avez fourni.

L'utilisation de JavaScript 'normal', vous pouvez joindre l'événement avec:

document.getElementById('mc_val').onchange = mc_change; 

En utilisant jQuery:

$('#mc_val').change(mc_change); 

Bien sûr, il n'y a aucune raison de croire cela va résoudre le problème, car ils devrait tous être (plus ou moins) équivalent à votre exemple. "Ça ne marche pas" n'aide pas vraiment.

+0

Aucune de ces options n'est correcte, vous appelez la fonction immédiatement dans les deux cas, sans affecter la fonction en tant que gestionnaire ... elle ne devrait pas avoir de parenthèse. –

+0

doh - corrigé :) – Hamish

-1

supprimer le 'javascript:' ... il devrait être:

<input type="text" id="mc_val" onchange="mc_change();" />

+0

il ne fonctionne pas –

+0

le 'javascript:' est redondant, mais il est pas incorrect. Ne devrait pas faire la différence. – Hamish

-1

J'ai oublié quel navigateur fait cela (l'IE, je pense), mais l'événement de changement est différé jusqu'à ce que l'entrée perd le focus. Essayez de cliquer sur autre chose et voir si elle s'exécute.

J'ai trouvé cela mentionné dans change method documentation de jQuery. J'ai contourné le problème en utilisant la touche à la place (bien que je n'étais pas heureux à ce sujet!).

+0

non, il devrait être comme ça pour tous les navigateurs. – Hamish

+0

Vous avez raison. Je l'ai mal lu. ... Je pourrais avoir juré, cependant ... – mqsoh

1

Comme les autres l'ont dit, votre script est valide et devrait faire ce qui est prévu. Cependant, je devine que l'événement que vous voulez n'est probablement pas l'événement onchange. Dans mes rapports avec la saisie de texte, j'ai trouvé que la liaison à onchange ne fera que quelque chose quand le focus est levé à partir de la saisie de texte, donc utiliser une combinaison d'événements pour couvrir plusieurs méthodes de saisie peut être votre meilleur choix.

Voici un exemple des événements que j'utilise généralement de faire quelque chose quand le texte change:

$('#mc_val').bind({ 
    change : mc_change, 
    keydown : mc_change, // for key presses 
    mouseup : mc_change, // for mouse paste 
    mousemove : mc_change // for mouse paste 
}); 
+0

merci pour l'aide, vous avez traité tout l'événement;) –

+1

+1 - Vous pouvez également utiliser simplement des événements séparés par des espaces dans ce cas, par exemple: '$ ('# mc_val') .bind ('change keyup paste', mc_change); ' –

+0

Sympa, je n'ai pas vu cette syntaxe avant. Merci! – FlashXSFX