javascript - 表单始终使用 Javascript 确认提交
问题描述
表单工作了一段时间,但我移动了一些代码并且无法恢复(吸取的教训),现在代码没有像预期的那样工作。简而言之,用户单击删除按钮 > 删除按钮将特定条目 ID 发送到函数,函数获取表单 ID,“确认删除”,然后应该发送到我的 delete_entry.php 代码。现在,即使我点击“否”,表单总是在提交,并且我添加了一个警报来告诉我它去哪条路线。
我试过注释掉表单,它仍然提交,所以我不认为它与确认功能明确相关(虽然可能很疯狂)
if ($entry['SubEntryID'] == "0") { ?>
<div id="post"><!-- This is the main post-->
<div id="main">
<div id="title">
<?php echo $entry['EntryID']; ?>
<?php echo $entry['Title']; ?>
</div><br />
<p><?php echo $entry['Body']; ?></p><br />
<div id="postinfo">
At: <?php echo $entry['CreateDate']; ?><br/>
Posted by - <?php echo $entry['UserName']; ?>
</div>
<!-- Start the form for the delete button -->
<form action="Delete_entry.php" method="post" id="Delete<?php echo $entry['EntryID'];?>">
<input type="hidden" readonly="true" name="EntryID" value="<?php echo $entry['EntryID']; ?>" />
<input type="hidden" readonly="true" name="UserID" value="<?php echo $entry['UserID']; ?>" />
<?php if ($userid == 1 || $userid == $entry['UserID']) { ?>
<input onclick="confirmdelete('Delete<?php echo $entry['EntryID'];?>')" type="image" src="redx.png" alt="Delete Post" id="btnDelete" value="Delete Post"/>
<?php } ?><br />
</form>
</div>
function confirmdelete(eid) {
var retval = confirm("Are you sure you want to delete?" + eid + "?");
if (retval == true) {
alert("You said Yes");
document.getElementById(eid).submit();
}
else
{
alert("You said No");
}
}
我希望删除按钮调用该函数,如果它是真的,该函数通过提交表单来响应,如果是假的则取消表单提交。只有在确认为真时才应调用表单页面,然后提交()
解决方案
首先,confirmdelete() 没有返回任何真/假,因此没有代码可以阻止表单提交。其次,即使函数返回 false,表单也会提交,因为您有 2 次提交(表单和 onclick)。
将函数调用移至表单的 onsubmit()。去掉onclick,因为输入类型图片默认提交表单。这是代码:
形式:
<form action="Delete_entry.php" method="post"
id="Delete<?php echo $entry['EntryID'];?>"
onsubmit="return confirmdelete(<?php echo $entry['EntryID'];?>)">
然后按钮(onclick删除):
<input type="image" src="redx.png" alt="Delete Post" id="btnDelete" value="Delete Post" />
最后是 JavaScript(返回真/假):
function confirmdelete(eid) {
if (confirm("Are you sure you want to delete?" + eid + "?")) {
alert("You said Yes");
return true;
}
else
{
alert("You said No");
return false;
}
}
推荐阅读
- vba - 基于服务器的规则将 500 多个地址整理到约 150 个收件箱文件夹中
- swift - 如何快速从字符串值中删除可选?
- java - 如何使用 apache camel dsl 删除 csv 的标头
- c - 如何修复“调试错误!,变量'x'周围的堆栈已损坏”?
- azure - AS2 消息接收器
- wpf - 用于编辑数据网格的复杂属性的弹出窗口
- java - 将 ES 查询转换为按键和值对嵌套对象进行排序到 Java API(ES 版本 6.2)的问题
- python - 我可以在 python 函数中读取 Excel 文件时锁定它吗?
- git - 错误消息:第一次为新项目克隆存储库时目录名称无效
- python - 2x 嵌套函数中的访问列表