2016-08-13 37 views
1

我有一個包含href屬性的元素。點擊它會刪除數據,所以我希望用戶確認該操作。 href屬性指的是一個具有將在GET參數中刪除的數據的id的php文件。我已經添加了一個onclick屬性,應該執行下面這段JS的(它表明要求確認語義UI模式):使用onclick上的<a>元素

confirmmodal = function() { 
    beforeunload = function() { 
     $('.ui.basic.modal') 
      .modal({ 
       closable: false, 
       onDeny: function() { 
        return false; 
       }, 
       onApprove: function() { 
        return true; 
       } 
      }) 
      .modal('show') 
     ; 
} 
} 

但是當我運行這一點,還是到會刪除該頁面數據(雖然我還沒有建立它,所以沒有任何被刪除)。會不會有一個選項讓onclick屬性優先於href屬性?

+1

你使用什麼樣的模式,什麼jQuery插件,什麼html代碼後面?你如何稱呼模態?請提供所有必需的代碼。 – skobaljic

+1

[如何使用jQuery阻止默認鏈接點擊行爲]的可能重複(http://stackoverflow.com/questions/5632031/how-to-stop-default-link-click-behavior-with-jquery)。而且你需要在回調之外這樣做,所以使用防止默認值。 –

+0

爲什麼你不能有鏈接點的href並觸發模式窗口,並且確認模式包含指向其他頁面的鏈接或觸發對該頁面執行AJAX調用的函數?如果頁面中的刪除鏈接不能導致刪除操作,並且可以在不觸發刪除的情況下關閉模式 - 或者如果命中「確認」,則允許刪除操作發生。 – gavgrif

回答

1

您需要在代碼的末尾添加event.preventDefault()

如:

<a href="somePage.php" onclick="showDialog(event)">Delete</a> 



function showDialog(e) { 
    // custom code to show dialog here 
    e.preventDefault(); 
} 
0

好吧,我對劇本了一些調整到了那裏,考慮到gavgrif的評論也是如此。

我做了<a>元素有一點不同,所以不會再包含一個href屬性:現在

<a title="Delete post" onclick="confirmmodal(this)" data-postid="'. $row['postnr'] .'"><i class="large delete middle aligned icon"></i></a> 

,如果單擊該圖標,是帖子ID可用於JS一樣,所以我們可以只指的是在GET參數被點擊了確認按鈕時:

confirmmodal = function (a) { 
    $('.ui.basic.modal') 
     .modal({ 
      closable: false, 
      onDeny: function() { 
       return true; 
      }, 
      onApprove: function() { 
       window.location.href = "deletepost.php?id=" + a.dataset.postid 
       return true; 
      } 
     }) 
     .modal('show') 
    ; 
} 

這是一個半醜陋的修復,但它不是有更多的線路,我不可曉得***關於JQuery :)

感謝所有的幫助,我幾乎到了preventDefault(),但如果行動得到證實,我無法繼續,所以這是一個更簡單的解決方案。