2010-08-02 1 views
45

Ich möchte ein HTML-Formular nichts tun, nachdem es eingereicht wurde.Want HTML-Formular submit, um nichts zu tun

action="" 

ist nicht gut, weil die Seite neu geladen wird.

Grundsätzlich möchte ich eine Ajax-Funktion aufgerufen werden, wenn eine Taste gedrückt wird oder jemand nach Eingabe von Daten "Enter" drückt. Ja, ich könnte das Formular-Tag fallen lassen und einfach nur die Funktion aus dem onclick-Ereignis der Schaltfläche aufrufen, aber ich möchte auch die "hit-enter" -Funktion verwenden, ohne dass alles hackig wird.

+2

„ich will auch die "Enter zu drücken" Funktionalität, ohne dass alle hacken. " Ich denke, das Schiff ist gesegelt, nachdem Sie sich entschieden haben, ein Formular mit Aktion = "" zu haben. Warum nicht einfach Handler für Onclick-Ereignisse und Tastendruckereignisse verdrahten? – RPM1984

Antwort

63

Durch die Verwendung von return false; in dem JavaScript, das Sie von der Schaltfläche Senden aufrufen, können Sie das Senden des Formulars stoppen.

Grundsätzlich müssen Sie die folgende HTML:

<form onsubmit="myFunction(); return false;"> 
<input type="submit" value="Submit"> 
</form> 

Dann wird die Unterstützung javascript:

<script language="javascript"><!-- 
function myFunction() { 
    //do stuff 
} 
//--></script> 

Wenn Sie es wünschen, können Sie auch haben bestimmte Bedingungen erlauben das Skript das Formular abzuschicken:

Gekoppelt mit:

<script language="JavaScript"><!-- 
function myFunction() { 
    //do stuff 
    if (condition) 
     return true; 

    return false;  
} 
//--></script> 
+3

Fehlendes 'function' Schlüsselwort:' function myFunction() {} ' –

0

Als Teil des onclick-Ereignisses der Schaltfläche gibt false zurück, wodurch das Senden des Formulars verhindert wird.

dh:

function doFormStuff() { 
    // ajax function body here 
    return false; 
} 

Und rufen Sie diese Funktion auf die Schaltfläche klicken Sie auf Absenden. Es gibt viele verschiedene Möglichkeiten.

2

Wie wäre es

<form id="my_form" onsubmit="the_ajax_call_function(); return false;"> 
...... 
</form> 
-1

Verwendung jquery. Vielleicht legen Sie ein div um Ihre Elemente aus dem Formular. Dann prevent() und dann machen Sie Ihre Ajax-Aufrufe

2

Sie den folgenden HTML verwenden können

<form onSubmit="myFunction(); return false;"> 
    <input type="submit" value="Submit"> 
</form> 
7

Es funktioniert auch:

<form id='my_form' action="javascript:myFunction(); return false;"> 
+2

Obwohl das nichts tut, heißt es in der Konsole' Uncaught SyntaxError: Illegal return statement'. – alej27

-1
<form action='javascript:functionWithAjax("search");'> 
    <input class="keyword" id="keyword" name="keyword" placeholder="input your keywords" type="search"> 
    <i class="iconfont icon-icon" onclick="functionWithAjax("search");"></i> 
</form> 

<script type="text/javascript"> 
function functionWithAjax(type) { 
    // ajax action 

    return false; 
} 
</script> 
+0

Sie sollten den Code wirklich ein wenig erklären. Es wird aus einer guten Antwort eine großartige werden. – Neil