2012-04-13 9 views
2

を入力し押すことで、私は(ここでスリムバージョンだ)形式で異例の問題を抱えている:ボタンが正常に動作しjQueryのフォーラム提出

<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> 

私がヒットした場合、しかし、ときがあるテキストボックスのいずれかを入力します。フォーカス、「戻るボタン」アクションは、フォームの提出ハンドラは、「チェックアウト」を行うように設定されていても...発射するものです...

+0

どのように二つのボタンによって導入競合を回避し、ちょうど 'back'アクションアップの設定についてスタイルのリンクとして? – rjz

+0

フォームのボタンは、デフォルトで送信ボタンです。タイプボタンで交換してください。 – RobG

答えて

2

おそらくtothis PROCESS_ORDERを変更することができます:

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

とに変更します。あなたのフォームは、2つの送信ボタンがあり、フォームが活性化することにより、入力したキーを使用して提出します

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

これで解決しました...私はまだこれが起きているのが奇妙だと思っています...:S – Ian

+0

他の回答のいくつかは、がデフォルトで送信ボタンであり、溶液。しかし、私が提供した解決策は、どのようにしなければならないかということです。それは最も柔軟性があり、コードをスケーラブルに保ちます。 – teh1

0

それに.submit()ハンドラをバインドし、その後

<form id="myForm">

最初の送信ボタン。送信ボタンとして最初のボタンを解釈するブラウザを避けるために

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

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

に変更

+0

フォームの[button要素](http://www.w3.org/TR/html401/interact/forms.html#edef-BUTTON)のデフォルトの種類はsubmitです。 – RobG

+0

@RobG right、thanks、fixed。 – Umbrella

関連する問題