2012-11-14 62 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,因此事件進展正常。