2010-09-06 1 views
5

Die folgenden funktioniert in Firefox und Chrome, aber IE 8 wird nicht die submit() -Methode aufrufen, wenn der Anker Link geklickt wird.onclick-Ereignis in Anchor-Tag funktioniert nicht in IE

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

Verfahren einreichen wird auf der gleichen Seite wie folgt definiert:

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

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

</script> 
</head> 
+0

haben Sie versucht onclick = "javascript: submit();" ? – Neutralizer

+1

@Umair: Das Präfix 'javascript:' muss nicht auf 'onclick' oder ähnlichen Event-Handler-Attributen stehen. Dies ist nicht die 'href'. –

+0

Sobald es für mich funktioniert hat, denke ich, es ist – Neutralizer

Antwort

7

Können Sie ein bisschen mehr Kontext? Wie wo und wie die submit Funktion definiert ist? Mit nur dem oben genannten sollte es funktionieren - außer:

Sie möchten wahrscheinlich auch return false; drin, obwohl, um die Standardaktion abzubrechen. Z.B .:

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

Es kann sein, dass die Standard-Aktion geschieht unmittelbar nach dem submit und damit zu stören.

Bearbeiten: Nur für Anfälle und kichern, versuchen Sie einen anderen Namen für Ihre submit Funktion. IE hat Namespacing-Probleme. Wenn Sie etwas mit dem id oder name Attribute auf „Eintragen“, zum Beispiel, das könnte ein Problem sein ...

+0

Ich habe versucht, "return false" hinzuzufügen. ohne Wirkung. Der IE-Debugger zeigt den Aufruf des onclick-Codes an, gibt aber die Methode submit() nicht ein. – Mark

+0

@Mark: Ich bin mir nicht sicher, ob ich weiß, was Sie meinen, wenn der Debugger anzeigt, dass er den 'onclick'-Code eingibt, aber nicht die' submit'-Methode eingibt. Gibt es eine Ausnahme? Wenn nicht, was passiert, damit es nicht in die Funktion eintritt? –

+0

Danke für die Antwort T.J. Es ist wirklich merkwürdig. Ich setze den IE 8 Debugger auf "alle durchbrechen". Sobald ich auf den Link "Anmelden" klicke, bricht der Debugger ab und markiert onclick = "submit();" im Anker. Ich nehme an, dass die Hervorhebung den nächsten auszuführenden Befehl angibt. Um sicher zu sein, habe ich auch einen Haltepunkt innerhalb der Methode submit gesetzt. Von diesem Punkt an klicke ich auf "Step Into" oder "Step Over" im Debugger-Menü. Beide haben den gleichen Effekt, die void (0) -Methode hervorzuheben. Aus irgendeinem Grund wird IE die Funktion submit() nicht ausführen. Ich sehe keinen Hinweis auf einen Fehler. – Mark

0

Versuchen Sie sich mit

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

oder

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

Wenn Sie müssen Sie den Wert für die JavaScript-Funktion eingeben, stellen Sie sicher, dass das einfache Zitat anstelle des doppelten Zitats verwendet.

Zum Beispiel:

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

Für andere, die über dieses Problem vor kurzem mehr gekommen sind, für mich ist es aufgrund IE 11 Kompatibilitätsmodus auf der Website unter Verwendung war. Ich sah, dass ich auf derselben Domain war, angenommen, dass die Site eine Intranet-Site war und wechselte automatisch in den Kompatibilitätsmodus, wodurch ein Teil des Javascript (und einige andere unerwartete Anzeigeprobleme) zerstört wurde.

Sie können diese Funktion ausschalten, indem Sie auf die Zahnradeinstellungen klicken und "Einstellungen für die Kompatibilitätsansicht" wählen. Es gibt ein Kontrollkästchen, das als "Intranetsites in Kompatibilitätsansicht anzeigen" festgelegt wurde.