我的印象是这是正确形成的,但在这里它转发到主播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>
答案 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
中,您应该返回 myconfirm
:onclick="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更改(如果需要)。