在javascript确认时停止加载锚点

时间:2010-04-10 23:11:01

标签: javascript

我的印象是这是正确形成的,但在这里它转发到主播href(点击通过?我应该怎么称呼它?)无论用户是否选择取消或好的。

<script type="text/javascript">
function myconfirm(my_string)                                                 
{                       
 var agree = confirm('Are you sure you want to remove ' + my_string + '?');
 if(agree)                                                                       
 {                                                                               
  return true;                                                            
 }       
 else                                                                            
 {                                                                               
  return false;
 }
}                                                                                       
</script> 

和锚

<a href="example.com/?remove=yes" onclick="myconfirm('my_string')">My String</a> 

5 个答案:

答案 0 :(得分:9)

你没有从onclick处理程序返回任何内容。做

onclick="return myconfirm('my_string');"

此外,您可以将if子句缩短为

return agree;

甚至只是

return confirm('Are you sure you want to remove ' + my_string + '?');

答案 1 :(得分:2)

马蒂关于需要退货的权利。但是:

<a href="example.com/?remove=yes" onclick="myconfirm('my_string')">My String</a> 

不要使用链接。任何具有活动效果(例如删除)的内容都应该是包含method="post"的表单,而不是导致GET的表单或链接,执行删除的服务器端脚本应该只 接受POST请求。

接受非幂等行为的GET,以及违反标准,可能导致各种amusing problems

您可以设置表单提交按钮的样式,以便它不像按钮一样看起来,如果您真的想:

<form class="confirm" method="post" action="/remove" title="remove my string"><div>
    <input type="submit" class="unbutton" value="My String" />
</div></form>

.unbutton {
    border: none; padding: 0;
    background: transparent; color: blue;
    text-decoration: underline; cursor: pointer;
}

您还可以通过从JS分配它们来避免使用内联事件处理程序属性:

// Find forms with confirm class and bind to them
//
for (var i= document.forms.length; i-->0;)
    if (document.forms[i].className==='confirm')
        document.forms[i].onsubmit= getConfirmation;

// Prompt user to allow submission or not
//
function getConfirmation() {
    return confirm('Are you sure you wish to '+this.title+'?');
}

答案 2 :(得分:0)

在onclick中返回false以停止事件。

onclick="if( !myconfirm('my_string') ) { return false; }"

或者简单地说:

onclick="return myconfirm('my_string');"

答案 3 :(得分:0)

onclick中,您应该返回 myconfirmonclick="return mycnfirm('my_string')"的值。顺便说一下,您只需在confirm

中返回myconfirm的结果即可
 function myconfirm(my_string) {
      return confirm('Are you sure you want to remove ' + my_string + '?');
 }

答案 4 :(得分:-1)

将“javascript:void(0)”作为href,然后处理onclick中的所有内容,包括location.href更改(如果需要)。