2011-12-15 10 views
2

サブミット時にモーダルボックスにYESとNOのボタンが表示されるようにするフォームがあります。フォームを送信するにはyesとnoの両方のボタンが必要ですが、クリックしたボタンを知っているJQUERYモーダルボックス確認フォームサブミット

はここ

<input onclick="$.msgbox('confirm text',{ 
    buttons : [ 
    {type: 'submit', value:'YES'}, 
    {type: 'submit', value:'NO'} 
    ] 
}, function(buttonPressed) { 

});" name="btnApply" id="btnApply" tabindex="41" src="images/btnsubmit.jpg" style="border-width: 0px;" type="image" /> 

私の問題は、ユーザーがクリックを提出したときに、フォームが提出されている私のコードです。

すべてのヘルプやアイデアは

おかげ

答えて

2

私は$.msgboxプラグインに慣れていないんだけど、あなたが上でモーダルダイアログを開くべきである一方で<form>ボタン入力ではなく、特定の入力フィールド(テキストボックスなどの<input type="text|password">)の入力/返信によってフォームを送信することもできます。

var confirmed = false; 
$('#myform').bind('submit', function() { 
    if (confirmed) { 
    return true; // confirmation received, continue form submission process 
    } else { 
    $.msgbox(
     'my modal message', 
     { 
     buttons : [ 
      { type: 'button', value: 'YES' }, 
      { type: 'button', value: 'NO' } 
     ] 
     }, 
     function(buttonPressed) { 
     confirmed = buttonPressed.value; // Update the confirmed variable 
     $('#myform').submit(); // re-submit the form 
     } 
    ); 
    return false; // cancel form submission 
    } 
});  
1

が戻り偽を追加します。素晴らしいことだ:

<input onclick="$.msgbox('Would you like a cash advance of up to £1000 whilst we process your loan?',{ 
    buttons : [ 
    {type: 'submit', value:'YES'}, 
    {type: 'submit', value:'NO'} 
    ] 
}, function(buttonPressed) { 

}); return false;" name="btnApply" id="btnApply" tabindex="41" src="images/btnsubmit.jpg" style="border-width: 0px;" type="image" /> 
+0

フォームがサブミットされないようにしてくれてありがとうございましたが、ボックス内でYESまたはNOボタンをクリックしても何も起こらない場合はどうすればいいですか? – user1053865

+0

あなたの関数にフォームありがとうございます: '$( '#idfortheform ').submit(); ' – ferenyl

0

わからないmsgboxのいずれかが、あなたのコードに関するいくつかの発言は:

  1. は、あなたのコードに直接あなたのJSのロジックを添付しますが、あなたのマークアップにイベントをクリックして添付するのjQueryを使用しないでください(unobtrusive javascriptを参照してください):

    代わりの

    <input onclick="$.msgbox('confirm text',{ 
    

    使用

    $('#btnApply').click(function(e) { 
    
  2. あなたはイベントパラメータの偽one propertyを設定することにより、ハンドリングクリックを停止することができます。

    $('#btnApply').click(function(e) { 
        e.preventDefault(); // stop click handling and so form submitting  
    
  3. 最後に、msgboxコールバック関数に提出するかどうかのフォームを扱う:

    $.msgbox("Are you sure that you want to permanently delete the selected element?", { 
    type: "confirm", 
    buttons: [ 
        { 
        type: "submit", 
        value: "Yes"}, 
    { 
        type: "submit", 
        value: "No"}, 
    { 
        type: "cancel", 
        value: "Cancel"} 
    ] 
    }, function(result) { 
        if(result == "Yes") // display the form on submit 
         $('form').submit(); 
    }); 
    

jsFiddle available.

関連する問題