提交时的jQuery .click()函数 - 不发送值

时间:2012-06-20 12:24:59

标签: ajax jquery post submit

我的表单上有两个简单的提交按钮,工作正常:

<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不同。

由于

3 个答案:

答案 0 :(得分: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,但你明白了这一点。

答案 1 :(得分:1)

在表单中添加一个隐藏元素,当单击一个按钮时,让它在提交表单之前设置该元素的值。

答案 2 :(得分:0)

尝试:

dialog.dialog({
    buttons: {
            "Decline": function() {
               $( this ).dialog( "close" );
            },
            "Accept": function() {
               $( this ).dialog( "close" );
            }           
        }
});