我正在使用带有确认对话框的onClick事件创建一个简单的删除链接。我想确认用户想要删除条目。但是,似乎在对话框中单击“取消”时,默认操作(即href链接)仍在进行,因此该条目仍会被删除。不知道我在这里做错了什么......任何输入都会非常感激。
编辑:实际上,代码现在的方式,页面甚至没有调用函数...所以,根本没有对话框出现。我确实将onClick代码作为:
onClick="confirm('Delete entry?')"
确实显示了一个对话框,但仍然是取消取消的链接。
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<script type="text/javascript">
function delete() {
return confirm('Delete entry?')
}
</script>
...
<tr>
<c:if test="${userIDRO}">
<td>
<a href="showSkill.htm?row=<c:out value="${skill.employeeSkillId}"/>" />
<img src="images/edit.GIF" ALT="Edit this skill." border="1"/></a>
</td>
<td>
<a href="showSkill.htm?row=<c:out value="${skill.employeeSkillId}&remove=1"/>" onClick="return delete()"/>
<img src="images/remove.GIF" ALT="Remove this skill." border="1"/></a>
</td>
</c:if>
</tr>
答案 0 :(得分:114)
您的代码中存在拼写错误(标签 a 过早关闭)。 您可以使用:
<a href="whatever" onclick="return confirm('are you sure?')"><img ...></a>
请注意返回(确认):内部均衡中脚本返回的值决定是否运行默认浏览器操作;如果您需要运行大量代码,您当然可以调用另一个函数:
<script type="text/javascript">
function confirm_delete() {
return confirm('are you sure?');
}
</script>
...
<a href="whatever" onclick="return confirm_delete()"><img ...></a>
(请注意,删除是关键字)
为了完整性:现代浏览器还支持DOM事件,允许您为每个对象上的同一事件注册多个处理程序,访问事件的详细信息,停止传播等等;见DOM Events。
答案 1 :(得分:21)
好吧,我曾经遇到同样的问题,在确认之前加上“返回”这个词就解决了问题:
onclick="return confirm('Delete entry?')"
我希望这可能对你有益......
祝你好运!
答案 2 :(得分:10)
我用它,就像一个魅力。无需任何功能,只需与您的链接内联
onclick="javascript:return confirm('Are you sure you want to delete this comment?')"
答案 3 :(得分:8)
我有类似问题(点击按钮,但取消后点击它仍然删除我的对象),所以这样做了,希望它有助于将来的人:
$('.deleteObject').click(function () {
var url = this.href;
var confirmText = "Are you sure you want to delete this object?";
if(confirm(confirmText)) {
$.ajax({
type:"POST",
url:url,
success:function () {
// Here goes something...
},
});
}
return false;
});
答案 4 :(得分:7)
使用简单的链接执行操作(例如删除记录)对我来说很危险:如果抓取工具正在尝试索引您的网页该怎么办? 它将忽略任何javascript并关注每个链接,可能不是一件好事。
您最好使用method =“POST”的表单。
然后你会有一个“OnSubmit”事件来完成你想要的......
答案 5 :(得分:4)
首先,删除是javascript中的reserved word,我很惊讶这甚至为您执行(当我在Firefox中测试时,我收到语法错误)
其次,您的HTML看起来很奇怪 - 您是否有理由使用/>
关闭开始的锚标记,而不只是>
?
答案 6 :(得分:4)
<img src="images/delete.png" onclick="return confirm_delete('Are you sure?')">
<script type="text/javascript">
function confirm_delete(question) {
if(confirm(question)){
alert("Action to delete");
}else{
return false;
}
}
</script>
答案 7 :(得分:1)
如果你想在onclick标签中使用小内联命令,你可以使用类似的东西。
<button id="" class="delete" onclick="javascript:if(confirm('Are you sure you want to delete this entry?')){jQuery(this).parent().remove(); return false;}" type="button">
Delete
</button>
答案 8 :(得分:0)
试试这个:
OnClientClick ='return(确认(“您确定要删除此评论吗?”));'
答案 9 :(得分:-1)
我遇到了IE7的问题并且之前返回了false。
在此处查看我的答案另一个问题:Javascript not running on IE