1

我的表单上有两个简单的提交按钮,效果很好:

<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() 方法管理自己的提交。它可能会解决你的问题

编辑:回答您的评论:

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