1

フォームに 2 つの単純な送信ボタンがありますが、問題なく動作します。

<button id="accept" type="submit" name="accept" value="accept">Accept</button>
<button id="decline" type="submit" name="decline" value="decline">Decline</button>

ただし、問題のページは、URL に直接アクセスして表示することも、次の jQuery を使用してセットアップしたモーダル ダイアログに表示されることもあります。

dialog.dialog({
    buttons: [
        {
            text: "Decline", click: function() {
                $('#decline').click();
                dialog.dialog('close');
            }
        },
        {
            text: "Accept", click: function() {
                $('#accept').click();
                dialog.dialog('close');
            }
        }
    ]
});

dialog.load(url + '&ajax=1');

これにより、フォームが問題なく送信され、実際にクリックされた要素以外のすべての投稿情報が検出されます。たとえば、フォームを読み込んで #decline ボタンをクリックすると、その情報が投稿されますが、jQuery の場合はそうではありません。

ありがとう

4

3 に答える 3

3

入力からの送信アクションを待機させないため、ダイアログには注意してください。クリックするとすぐに送信がトリガーされます。$(form).submit() メソッドを使用して、submit の代わりにボタン タイプの入力を使用し、submit を自分で管理する必要があります。それはあなたの問題を解決するかもしれません

編集:コメントに答えるには:

<style>
.submitbutton{
    text-align:center;
    font-weight:bold;
    /* you can do whatever you like here */
}​
</style>
<div id="dialog"></div>
<form id="myform">
<input id="accept" class="submitbutton" type="text" value="Accept button" name="accept" value="accept"/>
<input id="decline" class="submitbutton" type="text" value="Decline button" name="decline" value="decline"/>

</form>​
<script>
$('#accept,#decline').click(function(e){
    alert('you clicked #'+$(this).attr('id'));
    //you can do whatever you want here as you know which button was pressed.
    // to add more information in your form :
    $('#myform').append($("<input>").attr("type", "hidden").attr("name", "newhiddendata").val("something"));
    $('#myform').submit();
});

var dialog= $('#dialog');
dialog.dialog({
    modal:true,
    buttons: [
        {
            text: "Decline", click: function() {
                dialog.dialog('close');
                $('#decline').click();

            }
        },
        {
            text: "Accept", click: function() {
                dialog.dialog('close');
                $('#accept').click();
            }
        }
    ]
});
​
</script>

http://jsfiddle.net/techunter/KPu7G/

これは本当に未加工で、CSS はまったくありませんが、要点がわかります。

于 2012-06-20T12:36:08.433 に答える
1

非表示の要素をフォームに追加し、ボタンがクリックされたときに、フォームを送信する前にその要素の値を設定します。

于 2012-06-20T12:52:27.080 に答える
0

試す:

dialog.dialog({
    buttons: {
            "Decline": function() {
               $( this ).dialog( "close" );
            },
            "Accept": function() {
               $( this ).dialog( "close" );
            }           
        }
}); 
于 2012-06-20T12:41:51.063 に答える