简单的JavaScript问题:onClick确认不阻止默认操作

我正在做一个简单的删除链接,带有一个确认对话框的onClick事件。 我想确认用户想要删除一个条目。 但是,似乎在对话框中单击取消时,默认操作(即href链接)仍在发生,因此条目仍会被删除。 不知道我在这里做错了什么…任何input将不胜感激。

编辑:其实,现在的代码的方式,页面甚至不会使函数调用…所以,根本没有对话出现。 我确实有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> 

您的代码中存在拼写错误(标签a太早closures)。 你可以使用:

 <a href="whatever" onclick="return confirm('are you sure?')"><img ...></a> 

注意return(confirm) :由内部evens中的脚本返回的值决定默认浏览器操作是否运行; 如果你需要运行一大段代码,你当然可以调用另一个函数:

 <script type="text/javascript"> function confirm_delete() { return confirm('are you sure?'); } </script> ... <a href="whatever" onclick="return confirm_delete()"><img ...></a> 

(请注意,删除是一个关键字)

为了完整性,现代浏览器还支持DOM事件,允许您为每个对象上的相同事件注册多个处理程序,访问事件的详细信息,停止传播等等。 请参阅DOM事件 。

那么,我曾经有同样的问题,并通过在确认之前添加单词“ return ”来解决问题:

 onclick="return confirm('Delete entry?')" 

我希望这可以帮你。

祝你好运!

我用这个,就像一个魅力。 没有必要有任何function,只需内联您的链接(S)

 onclick="javascript:return confirm('Are you sure you want to delete this comment?')" 

使用一个简单的链接来执行一个操作,比如删除一条logging对我来说看起来很危险:如果一个抓取工具正在尝试索引你的页面呢? 它会忽略任何JavaScript,并按照每一个环节,可能不是一件好事。

你最好使用method =“POST”的forms。

然后你会有一个事件“OnSubmit”来做你想要的东西…

我有类似的问题(点击button,但取消后点击它仍然删除我的对象),所以这样做,希望它可以帮助未来的人:

  $('.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; }); 

首先, 删除是JavaScript中的保留字 ,我很惊讶,甚至为你执行(当我在Firefox中testing它,我得到一个语法错误)

其次,你的HTML看起来很奇怪 – 是否有一个原因,你是closures开放锚标记与/>而不是>

 <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> 

如果你想在onc​​lick标签中使用小的内联命令,你可以使用这样的东西。

<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>

尝试这个:

OnClientClick ='return(confirm(“你确定要删除这条评论?”));'

我有问题与IE7和返回false之前。

检查我的答案在这里另一个问题: JavaScript不在IE上运行