2010-09-06 18 views
5

Ce qui suit fonctionne correctement dans Firefox et Chrome, mais IE 8 n'appelle pas la méthode submit() lorsque le lien d'ancrage est cliqué.L'événement onclick dans la balise anchor ne fonctionne pas dans IE

<a href="javascript:void(0);" onclick="submit();">Sign In</a> 

La méthode soumettre est définie sur la même page comme suit:

<head> 
<script type="text/javascript"> 

function submit() 
{ 
// other code            
document.forms[0].submit(); 
} 

</script> 
</head> 
+0

avez-vous essayé onclick = "javascript: submit();" ? – Neutralizer

+1

@Umair: Le préfixe 'javascript:' n'est pas nécessaire pour les attributs de gestionnaire d'événement 'onclick' ou similaire. Ce n'est pas le 'href'. –

+0

une fois qu'il avait travaillé pour moi, donc je suppose que c'est – Neutralizer

Répondre

7

Pouvez-vous fournir un peu plus de contexte? Comme où et comment la fonction submit est définie? Avec juste ce qui précède, il devrait fonctionner - sauf:

Vous probablement aussi vouloir return false; là, pour annuler l'action par défaut. .: par exemple

<a href="javascript:void(0);" onclick="submit();return false;">Sign In</a> 

Il se peut que l'action par défaut se produit immédiatement après la submit et interférer avec elle.

Modifier: Juste pour les ajustements et les fou rire, essayez d'utiliser un nom différent pour votre fonction submit. IE a des problèmes d'espace de noms. Si vous avez quoi que ce soit avec le id ou name attribut défini sur « Soumettre », par exemple, cela pourrait être un problème ...

+0

J'ai essayé d'ajouter "return false;" sans effet. Le débogueur IE affiche l'appel au code onclick mais n'entrera pas dans la méthode submit(). – Mark

+0

@Mark: Je ne suis pas sûr de savoir ce que vous voulez dire par le débogueur qui l'affiche en entrant le code 'onclick' mais en ne saisissant pas la méthode' submit'. Y a-t-il une exception levée? Si non, que se passe-t-il de sorte qu'il "n'entrera" pas dans la fonction? –

+0

Merci d'avoir répondu T.J. C'est vraiment bizarre. J'ai mis le débogueur IE 8 à "casser sur tous". Dès que je clique sur le lien "Connexion", le débogueur interrompt et met en évidence onclick = "submit();" dans l'ancre. Je suppose que la surbrillance consiste à indiquer l'instruction suivante à exécuter. Pour être sûr, j'ai également mis un point d'arrêt à l'intérieur de la méthode de soumission. À partir de ce point, je clique sur "Step Into" ou "Step Over" dans le menu du débogueur. Les deux ont le même effet de mettre en évidence la méthode void (0). Pour une raison quelconque, IE n'exécutera pas la fonction submit(). Je ne vois aucune indication d'erreur. – Mark

0

Essayez d'utiliser

<a onclick="submit();">Sign In</a> 

ou

<a href="javascript:submit();">Sign In</a> 
0

Si vous besoin d'entrer la valeur de la fonction javascript, assurez-vous que cela utilise le guillemet simple au lieu de la double citation.

Par exemple:

<a href="#" onclick="your_function('input');">Sign In</a> 
1

Pour d'autres qui ont rencontré ce problème plus récemment, ce fut pour moi en raison de IE 11 en utilisant mode de compatibilité sur le site. Il a vu que j'étais sur le même domaine, supposait que le site était un site intranet et passait automatiquement en mode de compatibilité qui cassait une partie du Javascript (et causait d'autres problèmes d'affichage inattendus).

Vous pouvez désactiver cette 'fonctionnalité' en cliquant sur les paramètres de cog et en choisissant "Paramètres de vue de compatibilité". Une case à cocher a été définie, appelée "Afficher les sites intranet dans la vue de compatibilité".