我有一个联系表。
现在,当我需要删除一条记录时,需要一个确认框来要求用户确认。到目前为止,我已经做到了。但是同时删除了OK
和Cancel
按钮的记录。
我的代码如下:
<td><a href="edit.php?id=<?php $_SESSION["name"] = ""; $_REQUEST["id"]=$row["first_name"]; echo $row["first_name"]; $_SESSION["name"]=$row["first_name"]; ?>">Edit</a> / <a href="delete.php?id=<?php echo $row["first_name"]; ?>" onclick="check()"> Delete </a></td>
<script>
function check(){
if(confirm("Are you sure you want to delete?")){
window.location.href = "delete.php?id=<?php echo $row["first_name"]; ?>";
return true;
}
else{
header("Location: http://localhost/test/display.php?show_details=Show+Details");
return false;
}
}
</script>
仅在单击确认框中的OK
按钮并单击display.php
返回到Cancel
(同一页)后,我才能删除记录吗?
仅应在单击delete.php
时导航到OK
,并在单击display.php
时停留在Cancel
。
我是PHP新手。请帮助...
答案 0 :(得分:0)
HTML锚点具有默认的点击操作:打开链接。现在,如果您在JavaScript中添加另一个点击处理程序,则必须防止该元素的默认操作,从而阻止打开链接。
要防止内联事件处理程序(与JS中使用属性onclick
相比,使用属性addEventListener()
设置的默认事件操作),必须在其中返回false
事件处理程序。
另请参阅:How to prevent default event handling in an onclick method?
以下两个摘要修复了该问题,并且还重新使用了href
属性,因此不能再次在JS中对其进行硬编码。
变量1:
<p>
<a href="edit.php?id=123">Edit</a>
/
<a href="delete.php?id=123" onclick="return check(this)">Delete</a>
</p>
<script>
function check(anchor) {
/* Only open the delete-link, if the confirm returns TRUE */
if (confirm('Are you sure you want to delete?')) {
window.location.href = anchor.href;
}
/* Return FALSE to prevent the default link action */
return false;
}
</script>
变体2:
<p>
<a href="edit.php?id=123">Edit</a>
/
<!-- Return FALSE to prevent the default link action -->
<a href="delete.php?id=123" onclick="check(this); return false;">Delete</a>
</p>
<script>
function check(anchor) {
/* Only open the delete-link, if the confirm returns TRUE */
if (confirm('Are you sure you want to delete?')) {
window.location.href = anchor.href;
}
}
</script>
变体3A:
不返回false,而是使用event.preventDefault()
。 (灵感来自@ths的评论)
<p>
<a href="edit.php?id=123">Edit</a>
/
<a href="delete.php?id=123" onclick="check(event, this)">Delete</a>
</p>
<script>
function check(event, anchor) {
/* Prevent the default link action */
event.preventDefault();
/* Only open the delete-link, if the confirm returns TRUE */
if (confirm('Are you sure you want to delete?')) {
window.location.href = anchor.href;
}
}
</script>
变体3B:
不返回false,而是使用event.preventDefault()
。 (灵感来自@ths的评论)
<p>
<a href="edit.php?id=123">Edit</a>
/
<a href="delete.php?id=123" onclick="event.preventDefault(); check(this);">Delete</a>
</p>
<script>
function check(anchor) {
/* Only open the delete-link, if the confirm returns TRUE */
if (confirm('Are you sure you want to delete?')) {
window.location.href = anchor.href;
}
}
</script>