2017-05-10 90 views
0

我正在使用以下<a>標籤來顯示它所做的簡單確認。但是,當我單擊「取消」按鈕時,它仍然執行post方法。根據我的理解,在確認之前有return應該會導致表單在單擊取消按鈕時不會發布。確認取消按鈕上的對話框發佈?

<a href="#" 
    data-potr-action="delete" 
    data-potr-val="@item.RID" 
    onclick="return confirm('Are you sure you want to delete this Request?');" 
    class="btn btn-default btn-sm"> 
    <i class="glyphicon glyphicon-trash"></i> Delete 
</a> 

我有這個代碼在頁面的結尾,但我不認爲這與問題有任何關係。我沒有想過在確認對話框中選擇取消時它會觸發點擊事件。

這只是將data-action和data-value中的值存儲到隱藏字段中。這是通過點擊完成的,它不應該進入。

@section scripts { 
    <script> 
    $(document).ready(function() { 
     // Hook events on buttons and anchors 
     buildClickEvents(); 
    }); 

    // Hook events on buttons and anchors 
    function buildClickEvents() { 
     $("[data-potr-action]").on("click", function (e) { 
     e.preventDefault(); 

     $("#EventCommand").val(
      $(this).data("potr-action")); 

     $("#EventArgument").val(
      $(this).attr("data-potr-val")); 

     $("form").submit(); 
     }); 
    } 
    </script> 
} 

回答

0

要回答你的問題沒有確認不會阻止表單發佈。如果按「OK」則返回true;如果按下「Cancel」按鈕則返回false。看到這個從W3c

盡你所能,如下是:

function buildClickEvents() { 
    $("[data-potr-action]").on("click", function (e) { 
    e.preventDefault(); 
    var result = confirm('Are you sure you want to delete this Request?'); 
    if(result == false){ 
     return; 
    } 
    $("#EventCommand").val(
     $(this).data("potr-action")); 

    $("#EventArgument").val(
     $(this).attr("data-potr-val")); 

    $("form").submit(); 
    }); 
} 

而從標籤中刪除以下:

onclick="return confirm('Are you sure you want to delete this Request?');" 
0
$("[data-potr-action]").on("click", function (e) { 
    if(confirm("your message")){ 
     $("#EventCommand").val(
      $(this).data("potr-action")); 

     $("#EventArgument").val(
      $(this).attr("data-potr-val")); 

     $("form").submit(); 
    } 

    e.preventDefault(); 


    }); 
+0

正要張貼相同。此外,請務必從HTML標記中刪除onclick屬性 – ChrisC

+0

這適用於我的表單中只有刪除按鈕,但在這種情況下,我同時擁有一個「過濾」按鈕和一個「刪除」按鈕。這就是爲什麼存在數據操作價值的原因。提交時,將值設置爲隱藏值,然後傳遞給Post方法。在post方法中,我使用switch語句來查看值。如果它是「過濾器」,它會做一件事,如果它是「刪除」,它會做另一件事。我這樣做是基於Paul Sheriff博客。 – Caverman