2009-09-08 23 views
13

In einer MVC-Ansicht habe ich ein Formular wie folgt. wenn der Benutzer auf den Submit-Button klickt, möchte ich zuerst etwas überprüfen. Wenn es in Ordnung ist, senden Sie das Formular. Wenn die Prüfung nicht bestanden wird, geben Sie dem Benutzer eine Warnmeldung und bleiben Sie dann in der Ansicht. Mein Beispielcode wie:Wie man das Senden des Formulars stoppt?

<script type="text/javascript"> 
    function CheckingStatus() { 
    //..... 
    if (answer == "N") { 
     alert("You choose No."); 
     return false; 
     } 
    } 
</script> 

<% Html.RenderPartial("MyForm"); %> 
.... 

<input id="btnSubmit" type="submit" value="Submit" onclick="CheckingStatus();" /> 

<% } %> 

Aber beim Testen, auch Antwort == "N", das Formular wird noch übermittelt. Wie kann ich das Senden des Formulars stoppen?

Antwort

27

versuchen

<input id="btnSubmit" type="submit" value="Submit" onclick="CheckingStatus();" /> 

zu

<input id="btnSubmit" type="submit" value="Submit" onclick="return CheckingStatus();" /> 
6

Ändern Sie Ihren Code zu ändern:

<input id="btnSubmit" type="submit" value="Submit" onclick="return CheckingStatus();" /> 

Hinweis ich das Wort "Rückkehr" hinzugefügt.

+0

Thank you very much. – KentZhou

0

Ich würde eine ASP.NET-Schaltfläche verwenden ODER die runat = "server" -Eigenschaft zur HMTL-Schaltfläche hinzufügen und dann die UseSubmitBehavior = "false" -Eigenschaft verwenden, um Postback/Formularübergabe zu deaktivieren. Sie können dann form.Submit(); oder ähnlich in Ihrem JavaScript.

+0

Dies ist MVC (siehe Tags). Es gibt keine Postbacks. –

7

Ein anderer Weg, es kann getan werden:

document.forms['MyForm'].onsubmit = CheckingStatus; 
+0

Dies ist nützlich, wenn es mehrere verschiedene Arten gibt, auf die ein Formular gesendet werden kann (z. B. Dropdown-Listenfelder für automatische Weiterleitung, Schaltflächen zum Senden usw.). Auf diese Weise wird sichergestellt, dass die Validierung durchgeführt wird, ohne dass der Onclick-Handler eines Eingabeelements überschrieben werden muss. –

+0

+1. Der richtige Ort, um den Formularvalidierungs-/Bestätigungscode einzugeben, ist immer form.onsubmit. Und wenn Sie es aus JavaScript zuweisen, haben Sie nicht den albernen Attributwert 'return ...' wrapper. – bobince

Verwandte Themen