2010-01-13 7 views
0

Imaginez que vous avez un bouton comme celui-ci:Comment lire javascript événement programatically

<input name="myButton" type="button" value="button" onclick="return test();" > 

où les fonctions de test est la suivante:

function test(){ 
    // do something 
    return true; // based on some logic return boolean 
} 

Maintenant, disons, je ne sais pas ce qui est défini pour l'événement onclick, et au moment de l'exécution, j'ai besoin de lire la fonction ou tout code défini sur onclick et exécutez-le. Voici un exemple:

var btn = getElementById('myButton'); 
var btnOnClickFunc = btn.onclick; 
if (btnOnClickFunc) { 
    // do something 
} 

Je sais que cela ne fonctionne pas, et qui est en fait ma question. Comment puis-je lire l'événement onclick du bouton dans cet exemple lors de l'exécution?

Un exemple de ce cas est lorsque l'onclick est attaché au bouton plus tard en utilisant jQuery.

Toute aide est appréciée ...

+1

en double de: http://stackoverflow.com/questions/446892 ? –

Répondre

4

Si vous devez faire, vous pouvez factoriser éventuellement votre code afin que vous ne avez plus besoin de le faire. En attendant, vous pouvez utiliser ce hack:

$('#myButton').attr('onclick')(); 

L'attribut 'onclick' retourne en fait une fonction, afin d'appeler avec () exécute en fait cette fonction.

Si vous préférez ne pas utiliser jQuery, vous n'êtes pas obligé de le faire. Les travaux suivants sans elle:

document.getElementById('myButton').onclick(); 

En outre, pour l'une de ces deux, vous pouvez le casser en deux lignes:

var clickFunc = $('#myButton').attr('onclick'); 
... 
clickFunc(); 
+0

Merci pour la réponse! Ça a marché. Ce code fait partie d'une structure qui relie plusieurs parties entre elles. La fonction et l'événement onclick seront écrits par le développeur et le framework fera plus de choses derrière la scène. C'est la raison pour laquelle je dois lire le code du développeur. Il n'a pas besoin d'être refactorisé pour la raison que je viens de mentionner. –

Questions connexes