我的表单上有两个简单的提交按钮,工作正常:
<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不同。
由于
答案 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" );
}
}
});