这是代码:
<form method="post" id="cp_ind_form">
// lots of input fields!
<input type="submit" name="update_submit" value="Update" />
<input type="submit" name="delete_submit" value="Delete" onclick="deleteConfirm()" />
</form>
scripts.js (确认此文件已连接到上一页)
(function deleteConfirm() {
var s = document.getElementById('confirm');
s.onchange = function() {
var yes = confirm('Do you really want to delete this location?');
if (yes) {
var f = document.getElementById('cp_ind_form');
f.submit();
}
}
})();
}
这让我疯了。这样的基本功能在这里不起作用?我基本上是从其他有代码的代码中复制它,这也没有什么不同。有人可以确认我是否错过了一个小细节?
答案 0 :(得分:4)
查看代码。
当您单击提交时,您正在添加onchange事件。
您没有触发确认显示,并且您没有取消原始提交。
用(funciton(){})()包装它是没有意义的;
应该是
function deleteConfirm() {
return confirm('Do you really want to delete this location?');
}
和
onclick="return deleteConfirm();"
答案 1 :(得分:2)
要在调用deleteConfirm
时实际执行确认,请将代码更改为:
function deleteConfirm() {
var yes = confirm('Do you really want to delete this location?');
if (yes) {
document.getElementById('cp_ind_form').submit();
}
// block default submit
return(false);
}
这也会返回false,因此默认表单提交不会发生。
然后,将您的HTML更改为:
onsubmit="return deleteConfirm()"
如果您处理onsubmit而不是onclick,则可以通过从处理程序返回false来阻止默认提交。
答案 2 :(得分:1)
deleteConfirm()
。在此函数中,您将为事件onchange
分配代码,而不是等待更改项#confirm
。我不知道那个元素在哪里但是我按下事件永远不会被激活所以确认框永远不会显示