2010-12-11 32 views
0

私は送信ボタンとキャンセル/閉じるボタンの2つのボタンを持つフォームを持っています。ユーザーが送信をクリックすると、入力されたデータはhttp://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/を使用して検証されます。すべてが有効であれば、フォームはjQuery/AJAXで送信されます。それはすべてうまく動作し、素敵です。私はキャンセルボタンの問題に遭遇します。キャンセルボタンに確認を求めます。ユーザーが進むことを選択すると、自分が選択したページに移動します。彼らがキャンセルしたくないと判断した場合、それらは単にページに残されます。それは動作していない最後の部分です。jQuery AJAXの送信を使用しているフォームの処理/送信を停止するにはどうすればよいですか?

マイフォームのコードは次のようになります。

<form name="createPage" id="createPage" method="post" action="pager.php" class="ajax updateForm"> 
<input name="whatever" type="text" /> 
      <button type="submit" id="submitQuickSave" class="submitSave"><span>save</span></button> 
      <button type="submit" id="submitCancel" class="submitClose" onclick='confirm_close()'><span>close</span></button> 
</form> 

私の現在の取り消しスクリプトは次のようになります。ユーザーが実際にキャンセルしたい場合は、検証が実行されないようにフォーム送信をバインド解除します。その後、フォームはsubmitに進み、action属性のパラメータとしてcancelが含まれます。私はキャンセルサーバー側を処理し、ユーザーを新しいページに誘導します。

function confirm_close() 
{ 
var r=confirm("All changes since your last save operation will be discarded."); 
if (r==true) 
    { 
    $(".ajax").unbind("submit"); 
    } 
else 
    { 

    } 
} 

「else」引数には何を入れるべきかわかりません。ユーザーが取り消しを取り消す(つまり、falseを返す)場合、フォームは依然として送信を試みます。私はそれを止めることはできません。私は成功せず、このサイトや他の人からいくつかのことを試してみた:
event.stopImmediatePropogation
.abort()

任意のアイデア?基本的に、キャンセル/クローズボタンを正しく動作させるにはどうすればよいですか?

答えて

3

separating your JavaScript from your HTMLを検討してください。このことを念頭に、あなたはこのように傍受しようとしているあなたのクリックイベントのハンドラを記述することができます。

$("button#cancel").click(function($event) { 
    var r = confirm("All changes since your last save operation will be discarded."); 
    if (r) { 
     $(".ajax").unbind("submit"); 
    } 
    else { 
     $event.preventDefault(); 
    } 
}); 

をあなたのHTMLを微調整し、cancelボタンにid属性を追加する必要があります。

ここ

<button id="cancel" type="submit" value="cancel">Cancel</button>

例:助けhttp://jsfiddle.net/wvFDy/

願っています!

+0

ビンゴ。どうもありがとう。 – technoTarek

0

私はあなただけ

return false; 

これが動作するかどうか私に教えてくださいと信じています。

+0

残念ながら、ajaxの送信依頼は処理されません。 – technoTarek

関連する問題