2010-10-12 7 views
3

Nous avons un problème dans IE avec certains utilisateurs où l'événement onclick ne fonctionne pas:jQuery .cliquer ne fonctionne pas

<button type="button" id="btnSomething" name="btnSomething" onClick="myFunction();">Continue</button> 

Après avoir creusé autour du filet, les gens a suggéré d'utiliser l'événement .cliquez jQuery pour la compatibilité du navigateur croix .

J'ai essayé ce qui suit:

<script type="text/javascript">$('#btnSomething').click(function(){myFunction();});</script> 

Cela ne fonctionne pas, je l'ai essayé d'ajouter en alerte ('test'); mais ça ne s'appelle pas non plus. Si cela fait une différence, je n'ai pas supprimé onClick = "myFunction();" à partir de l'élément de bouton, il suffit d'ajouter le JS ci-dessus directement après le bouton dans le fichier HTML.

Répondre

0

Si le bouton est contenu dans un formulaire, assurez-vous de renvoyer false dans la fonction de clic pour empêcher la soumission du formulaire.

+0

Merci, je vais cependant ce n'est pas un bouton de soumission, le type est le bouton, pas soumettre. –

0

igor,

vous aurez besoin de faire référence à la jquery lib et faire quelque chose comme ceci:

<script src= "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script> 

$(function(){ 
    $('#btnSomething').click(function(){ 
     around(); 
    }); 
}); 

également, retirez la section onclick de votre bouton - javascript unobtrussive. espérons que cela fonctionne ..

+0

jQuery est déjà utilisé dans l'application et se trouve sur la page. Fait une erreur en écrivant "around()", aurait dû être "myFunction()", exactement le même que l'événement onClick. Je l'ai essayé comme ça et ça n'a pas marché. –

2

Deux points ici. Tout d'abord, vous ne devez lier vos gestionnaires d'événements que lorsque le DOM est terminé. jQuery facilite pour vous: vous devriez toujours mettre tout votre code jQuery dans le gestionnaire document.ready:

$(document).ready(function(){ 
    $('#btnSomething').click(function(){ 
     around(); 
    }); 
}); 

En second lieu, parce que votre fonction a déjà un nom (around), vous n'avez pas besoin d'ajouter la fonction anonyme supplémentaire ; vous pouvez l'appeler comme ceci:

$(document).ready(function(){ 
    $('#btnSomething').click(around); 
}); 
+0

Im sortie du bloc SCRIPT directement après le HTML est généré dynamiquement en utilisant Response.Write. Je vais essayer. Prêt cependant avait pensé que ce n'était pas nécessaire. –

+0

Essayé cela bien que cela ne fonctionne pas. –

+0

Dans ce cas, il y a un problème ailleurs dans votre code. Pourriez-vous nous donner un lien, ou le télécharger sur jsFiddle/jsBin? – lonesomeday

0

cela fonctionne très bien. assurez-vous d'exécuter votre code jQuery dans un bloc domready. voir ici: http://jsbin.com/inubo4

+0

Cela ne fonctionne pas dans notre application pour une raison quelconque. –

1

Comme d'autres ont dit que vous en avez besoin dans un gestionnaire document.ready, mais il peut être beaucoup plus courte, comme ceci:

<script type="text/javascript"> 
    $(function(){ 
    $('#btnSomething').click(around); 
    }); 
</script> 

Si vous ne pas avez l'intérieur d'un gestionnaire ready , le $('#btnSomething') ne peut pas trouver l'élément, car il ne sera pas dans le DOM pour trouver encore.