2012-04-13 6 views
2

ich ein ungewöhnliches Problem mit einem Formular (hier ist eine abgespeckte Version):jQuery Forum Submission Durch Schlagen Geben Sie

<script> 
    (function($){ 
     $("form").submit(function(){ 
      alert('Checkout time!'); 
     }); 
     $("button[name='process_order']").click(function(){ 
      alert('Button Checkout time!'); 
     }); 
     $("button[name='back']").click(function(){ 
      alert('Back Button'); 
     }); 
    })(jQuery); 
</script> 

<form> 
    <input type="text" name="moo1" tabindex="1" /> 
    <input type="text" name="moo2" tabindex="2" /> 
    <button name="back" tabindex="4">Back</button> 
    <button name="process_order" tabindex="3">Process Order</button> 
</form> 

Die Tasten funktionieren, aber wenn ich die Eingabetaste drücken, wenn eines der Textfelder, das hat Fokus, die ‚Zurück-Taste‘ Aktion ist es, was feuert ... auch wenn das Handler-Formular wird auf „Kasse“ zu tun ...

+0

zu vermeiden Wie wäre es, den Konflikt durch die beiden Tasten eingeführt zu vermeiden und nur die Einstellung der 'back' Aktion nach oben als gestylter Link? – rjz

+0

Eine Schaltfläche in einem Formular ist standardmäßig eine Absenden-Schaltfläche. Ersetzen Sie es durch eine Art-Schaltfläche. – RobG

Antwort

2

Sie wahrscheinlich den process_order tothis ändern könnten:

<input type="submit" name="process_order" value="Process Order" tabindex="3" />

Und Änderung:

<form id="myForm">

Dann binden die .submit() -Prozedur, um es

$('#myForm').submit(function() 
{ 
    alert('Button checkout time!'); 
    return false; //we return false so that it doesn't refresh the page 
}); 
+0

Dies löste es ... Ich finde es immer noch merkwürdig, dass dies geschah, obwohl ...: S – Ian

+0

Einige der anderen Antworten deuten darauf hin, dass eine ist standardmäßig eine Schaltfläche senden, und die Änderung des Typs ist eine andere Lösung. Allerdings ist die Lösung, die ich zur Verfügung gestellt habe, _technisch_, wie es gemacht werden sollte. Es ist am flexibelsten und hält Ihren Code skalierbar. – teh1

0

Ihre Form hat zwei Tasten einreichen, das Formular mit der Enter-Taste vorlegen wird durch die Aktivierung die erste Schaltfläche zum Senden. ändern

<button name="back" tabindex="4">Back</button> 

zu

<button type="button" name="back" tabindex="4">Back</button> 

den Browser zu interpretieren den ersten Knopf als Submit-Button

+0

Der Standardtyp für ein [Schaltflächenelement] (http://www.w3.org/TR/html401/interact/forms.html#edef-BUTTON) in einem Formular lautet submit. – RobG

+0

@RobG richtig, danke, behoben. – Umbrella

Verwandte Themen