wake-up-neo.com

onsubmit = "return false" hat keine Auswirkung auf Internet Explorer 7/8 (Formular wird noch gesendet)

Ich habe ein Formular, das durch Javascript-Code gesendet wird, der in "onsubmit" des Tags ausgelöst wird. Funktioniert gut mit allen Browsern - aber nicht mit IE7/IE8.

Was kann ich machen?

<form action="/dosomething.htm" method="GET" onsubmit="submitmyform();return false">
  [...]
  <input type="submit" value="Go">
</form>
8
Dirk Paessler

Ich werde das picken. Wenn Sie Formulareinreichungen bearbeiten möchten, ist dies für die Übermittlung vorgesehen. Wenn der Benutzer in einem Ihrer Felder die Eingabetaste drückt, wird Ihr Onclick-Handler vollständig vermieden. Hier ist ein grundlegendes Beispiel dafür, dass dies nicht aufdringlich geschieht.

<form name="myform">
  <input type="submit" />
</form>
<script>
  document.myform.onsubmit = function(){
    alert('handled');
    return false;
  }
</script>

Mit jQuery kann das sehr viel einfacher gemacht werden, gleiches Formular ...

$("form[name=myform]").bind('submit',function(){
   alert('handled');
   return false;
});
11
Drew

Einige der hier vorgeschlagenen Ideen funktionieren (weil sie unterschiedliche Methoden verwenden, um korrekten Code zu schreiben), aber es gibt eine viel einfachere Antwort

OP schrieb:

onsubmit="submitmyform();"

anstatt :

onsubmit="return submitmyform();"

Das ist es.

6
Thibault Witzig

Ich glaube nicht, dass Ihre falsche Rückkehr jemals erreicht wird, da sie nach dem zurückkehrt, was von Ihrer Funktion zurückgegeben wurde.

<form action="/dosomething.htm" method="GET" onsubmit="submitmyform();return false">

Stellen Sie sicher, dass Sie false innerhalb Ihrer 'submitmyform ()' - Funktion zurückgeben. Andernfalls kann es zu Ihrem Formular obsubmit event zurückkehren.

3
Ally

versuch das. Arbeit für mich.

onSubmit = "Javascript: False zurückgeben"

2
Husnu Setiawan
<script type="text/javascript">
<!--

function submitHandler()
{
  alert(0);
  return false;
}

window.onload=function(){document.getElementById("formid").attachEvent("onsubmit", submitHandler);}
-->
</script>

<form action="/dosomething.htm" method="GET" id="formid">
  [...]
  <input type="submit" value="Go">
</form>

Die Methode zum Anhängen von Ereignissen funktioniert nur für IE7/8. Wenn Sie eine zuverlässige Cross-Browser-Lösung wünschen, sollten Sie alternativ addEventListener verwenden.

Ich hoffe es hilft

2
Sergiu

Um ein Ereignis im älteren IE abzubrechen, müssen Sie returnValue auf false setzen. Einfach false zurückgeben, wird es nicht tun. Ich weiß nicht, warum Microsoft es auf diese Weise implementiert hat.

function validateForm(evt) {
//  if form is not valid
    if(!condition) {
    //  if evt has preventDefault
        if(evt.preventDefault)
            { event.preventDefault(); }
    //  if evt has returnValue
        else if(evt.returnValue)
            { evt.returnValue = false; }
    //  fallback
        else
            { return false; }
    }
}

//  assume form is reference to your form
form.attachEvent('onsubmit',validateForm);
1
Dissident Rage
<form action="/dosomething.htm" method="GET" onsubmit="return submitmyform(this)">
     [...]
     <input type="submit" value="Go">
   </form>

das funktioniert gut ... die Funktion muss wahr oder falsch zurückgeben

0
Atiqur

Ich hatte den gleichen Fehler und als ich die Konsole einschaltete, kam es nie. Also habe ich herausgefunden, dass es die Konsole war, die der Internet Explorer nicht kannte, solange sie ausgeschaltet ist. Fügen Sie dem Fenster einfach eine Dummy-Konsole mit dem folgenden Code hinzu (falls noch keiner vorhanden ist):

var myconsole = {log : function(param){}}
window.console = window.console || myconsole;

Mit diesem können Sie in Schwierigkeiten geraten, wenn Sie JavaScript-Konsole von Microsoft haben möchten. Dann kommentieren Sie einfach die Zeilen aus. Jetzt ist das Konsolenobjekt auf der gesamten Site nicht mehr undefiniert.

0
redestructa

Die Lösung für uns war, das Javascript-Ereignis von "onsubmit" des Formulars auf "onclick" des Submit-Buttons zu verschieben.

<form action="/dosomething.htm" method="GET">
  [...]
  <input type="submit" value="Go" onclick="submitmyform();return false">
</form>
0
Dirk Paessler