我有一个jQuery对话框,在单击“请确认”按钮时发布表单。
我看到了我的帖子数据,但按钮缺少其名称/值:
如何让它显示按钮名称/值?
期望结果的示例
以下是演示此行为的示例代码testjQueryDialog.php:
<html><head>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" type="text/css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var $dialog = $('<div></div>')
.dialog({
autoOpen: false,
title: 'Are you sure?',
modal: true,
closeOnEscape: true,
buttons: {
"Please confirm": function() {
$( this ).dialog( "close" );
$('#btnSubscription').parents('form').submit();
},
Cancel: function() {
$( this ).dialog( "close" );
}
}
});
$('#btnSubscription').live('click', function() {
$dialog.dialog('open');
return false;
});
});
</script>
</head><body>
<form action="/testjQueryDialog.php" method="post">
<div>
<input name="txtOne" type="text" value="One">
<input name="txtTwo" type="text" value="Two">
<button name="btnSubmit" id="btnSubscription" value="Subscription">Click</button>
</div>
<?php echo 'POST<br>'; print_r($_POST); ?>
</form></body></html>
答案 0 :(得分:1)
HTML4 spec表示:“如果表单包含多个提交按钮,则只有激活的提交按钮成功。”
看起来浏览器会忽略事实表单只有一个提交按钮,并且由于您通过$('#btnSubscription').parents('form').submit()
动态触发表单提交,因此按钮不被视为成功控件。
问题在于按钮click
回调:
$('#btnSubscription').live('click', function() {
$dialog.dialog('open');
return false;
});
从回调中返回false
时,按钮激活会丢失,您需要根据用户的选择返回值:Returning value from confirmation dialog using JQuery UI dialog
答案 1 :(得分:1)
似乎jQueryUI对话框略有破坏,因为它不返回按钮名称/值对。
我的解决方法是在表单中添加一个隐藏字段,并使用它来传递按钮值。
$('#btnSubscription').live('click', function() {
document.getElementById('hidSubmit').value = document.getElementById('btnSubscription').value
$dialog.dialog('open');
return false;
});
现在我想要的结果如下: 数组([txtOne] =&gt;一个[txtTwo] =&gt;两个[hidSubmit] =&gt;订阅)