2012-11-14 48 views
0

我有一个购买信用链接。我想点击链接确认显示,如果用户点击是链接直接。但在我的网页上,当我点击是或否链接指示我到href链接。意味着是或者不是不同,并且联系工作。确认删除不起作用

<script> 
    <!-- 
    function confirmbuy() { 
    if (confirm("Are You Sure???")) { 
    return true; 
    } else { 
    return false; 
    } 
    } 
    //--> 
    </script> 
<a href="buy.php" onclick="confirmbuy();">Buy</a> 

我测试此代码提交按钮和工作属性,但对于链接不工作!

+1

你应该摆脱'<! - ',这个世纪没有必要保护Netscape 2时代浏览器。 – Quentin

回答

3

您的事件处理程序函数(由内部事件属性的值定义)不返回任何内容。它只需拨打confirmbuy然后停止。

如果你想返回的confirmbuy返回值,那么你必须明确地这样做:

onclick="return confirmbuy();"> 

你不会有这样的问题是confirmbuy是事件处理程序:

ref_to_link.addEventListener('click', confirmbuy); 

我建议阅读更多关于addEventListenerUnobtrusive Javascript

3

您需要返回confirmbuy()函数的结果,否则该事件将永远不会被取消。

<a href="buy.php" onclick="return confirmbuy();">Buy</a> 
1

越好..

<a href="buy.php" onclick="return confirm('Are You Sure???');">Buy</a> 
+0

我不确定我会打电话*减少*更好的分离问题。 – Quentin

1

修正和删除不必要的代码:

<a href="buy.php" onclick="return confirm('Are You Sure???');">Buy</a> 
+0

你需要替换你的报价 – Matt

+0

@Matt:你的权利,thx修复:) – CodeZombie

+0

不会试图窃取信贷......它是[@GBD,它为你修复](http:// stackoverflow。 com/posts/13379599/revisions);)。 – Matt

2

嵌入式处理器实际上是投入的函数,它被设置为click事件的处理程序。所以基本上你的代码就相当于:

a.addEventListener("click",function(e){ 
    confirmbuy(); 
}) 

正如你可以看到,这个处理程序不返回false,因此事件进展正常。