【发布时间】:2014-01-28 12:39:55
【问题描述】:
脚本是:
function cDelete() {
$("#dialog-confirm").dialog({
resizable: false,
height: 240,
modal: true,
buttons: {
"Delete item": function () {
$(this).dialog("close");
$('form#someform').submit();
},
Cancel: function () {
$(this).dialog("close");
return false;
}
}
});
return false;
}
和表单元素:
<form id="someform" action="somefile.php" method="POST">
<button name="delete" type="submit" class="cancel" onclick="return cDelete();">Delete</button>
<input type='checkbox' class='toggle' value='$article_id' name='page-id[]'>
</form>
在 php 文件中,我检查如下数据:
if (isset($_POST['delete']) && isset($_POST['page-id'])){}
所以问题来了:
该脚本正确发送选中的复选框 ($_POST['page-id']) 的 POST,但它不发送按下按钮的 POST ($_POST['delete'])。好的,但只有当我输入表单隐藏输入时:input type="hidden" name="delete">.
我想在没有隐藏输入的情况下完成这项工作。我试图解决这个问题,但仍然没有结果。 也许有人可以帮助我?
第二个问题:脚本是否有可能在 onsubmit(form) 而不是 onclick(button) 上运行?
【问题讨论】:
-
它不发送按钮值,因为使用对话框引入了异步性,因此实际上发送表单的不是单击按钮——您调用表单的
submit方法是。使用onsubmit不会改变这一点。如果您不希望隐藏字段成为 HTML 的一部分,则可以动态插入它。 -
好的。感谢您的回答。我不知道什么更好:动态插入或隐藏输入,但在这种情况下,我认为我选择什么并不重要。重要的是让它发挥作用。无论如何,我会尝试动态插入。 PS 我知道 onsubmit 不会改变这一点。我只是想使用 onsubmit 因为我认为验证表单比 onclick(有些人使用 enter)更好,尤其是当您的提交按钮或输入 [submit] 很少时。但在这种情况下,我只有 1 个,所以 enter 的工作原理与 click 完全一样,所以我认为我会继续使用 onclick。再次感谢
标签: jquery post jquery-ui-dialog