6
votes

OnClick événement dans la balise d'ancrage ne fonctionne pas dans IE

L'option suivante fonctionne bien dans Firefox et Chrome, mais à savoir 8 n'appelera pas la méthode Soumettre () lorsque la liaison d'ancrage est cliquée.

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

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

</script>
</head>


6 commentaires

avez-vous essayé onclick = "JavaScript: soumettre ();" ?


@Umair: il n'y a pas besoin de la JavaScript: préfixe sur onclick ou des attributs similaires de gestionnaire d'événements. Ce n'est pas le href .


Une fois que cela avait fonctionné pour moi, je suppose que c'est


@Umair: avec respect, cela devait être autre chose. Dans cet endroit, JavaScript: est une étiquette (et celle que vous n'utilisez pas), pas un protocole. Dans le href , ce serait un protocole.


Peut-être une question stupide: y a-t-il une forme? :) Ou y a-t-il plus d'un?


Si vous modifiez la fonction Soumettre () fonction à la fonction Soumettre () {alerte ('Ça fonctionne'); } Ce qui se produit?


4 Réponses :


7
votes

Pouvez-vous fournir un peu plus de contexte? Tels que et comment la fonction Soumettre code> est définie? Avec juste ce qui précède, cela devrait fonctionner - sauf:

Vous voulez probablement aussi renvoyer false; code> là cependant, pour annuler l'action par défaut. EG: P>

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


6 commentaires

J'ai essayé d'ajouter "retour faux;" sans effet. Le débogueur IE montre l'appel au code ONCLICK, mais n'entrera pas la méthode Soumettre ().


@Mark: Je ne sais pas que je sais ce que vous entendez par le débogueur montrant qu'il entrant dans le code onclick mais ne saisant pas la méthode . Y a-t-il une exception lancée? Sinon, que se passe-t-il de sorte qu'il "ne" va pas "entrer dans la fonction?


Merci d'avoir répondu T.J. C'est étrange vraiment. Je fixe le débogueur IE 8 pour "casser tout". Dès que je clique sur le lien "Connexion", le débogueur enfreint et met en évidence OnClick = "Soumettre ();" dans l'ancre. Je suppose que la surbrillance est d'indiquer la prochaine instruction à exécuter. Pour être en sécurité, j'ai également défini un point d'arrêt dans la méthode de soumission. À partir de ce point, je clique sur "Entrez" ou "pas sur" 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, c'est-à-dire n'exécutera pas la fonction Soumettre (). Je ne vois aucune indication d'une erreur.


Vous avez raison T.J. C'était un nom d'espace nominal. C'est-à-dire des utilisations soumises pour quelque chose. Une fois que j'ai changé le nom de la fonction, il a fonctionné. Merci encore pour votre aide.


@ @Mark: Excellent! Heureux d'avoir aidé, j'aurais dû penser à cela pour commencer.


@ T.J.Crowder, j'ai fait face au même problème d'espace de noms avec <\ a> fonction. Une fois que j'ai changé le nom de la fonction fonctionnant. Merci pour cette conversation.



0
votes

Essayez d'utiliser

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


0 commentaires

0
votes

Si vous devez entrer la valeur à la fonction JavaScript, assurez-vous d'utiliser la citation unique au lieu de la citation double.

Par exemple: P>

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


1 commentaires

Cela n'a pas fonctionné pour moi dans IE9. Je devais passer à JQuery



3
votes

Pour les autres qui ont rencontré ce problème plus récemment, pour moi, cela était dû à IE 11 en utilisant Mode de compatibilité sur le site. Il a vu que j'étais sur le même domaine, supposé que le site était un site intranet et basculé automatiquement en mode de compatibilité qui a cassé une partie de la JavaScript (et a provoqué des autres problèmes d'affichage inattendus).

Vous pouvez désactiver cette "fonctionnalité" en cliquant sur les paramètres COG et en choisissant "Paramètres de la vue Compatibilité". Il y a une case à cocher qui a été définie appelée "Afficher les sites intranet dans la vue de compatibilité".


0 commentaires