2014-10-08 42 views
1

我嘗試在鼠標右鍵上防止默認,並且它工作正常,直到我嘗試打開引導模式。引導模式防止右鍵

如果我使用「alert」和og,則不會執行右鍵操作,但是當我打開bootstrap模式時,它不是。我試圖谷歌它,但我找不到我的答案。

$(".timer").on("contextmenu", function(evt) {evt.preventDefault();}); 

    $(".timer").mousedown(function(e){ 
     // $(".timer").bind('contextmenu', function(){ return false }); 
     e.preventDefault(); 

     if(e.button == 2) { 
      e.preventDefault(); 
      $('#changeTime').modal('show'); // rightclick is NOT prevented. 
      // alert('Hello'); // this works...? 
      return false; 
     } 
     return true; 
    }); 

任何人都可以幫我嗎?謝謝。

的PHP是:

echo '<td class="description" name="id' . $todos->id . '"> 
    <span class="descriptionText'.$todos->id.'">' 
    . $todos->description . '</span></td><td style="width:50px;"> 
    <span class="timer pull-right btn btn-primary" name="id'.$todos->id.'"> 
    ' . show_time($todos->total_time) . '</span></td></tr>'; 

的HTML模式是:

<div class="modal fade" id="changeTime" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
     <div class="modal-dialog"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> 
      <h4 class="modal-title" id="myModalLabel">Change time</h4> 
      </div> 
      <div class="modal-body"> 
       <form> 
        // A lot of HTML :) 
       </form> 
      </div> 
      <div class="modal-footer"> 
      <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
      <button type="button" class="btn btn-primary">Save changes</button> 
      </div> 
     </div> 
     </div> 
    </div> 
+0

在模式你有一個'iframe'? – Romeo 2014-10-08 15:56:36

+0

不,它不在iframe中。我在頁面上沒有內置頁框。 – 2014-10-08 15:58:12

回答

0

因此,基於下面的評論,我覺得我應該更新我的答案。

您希望忽略默認點擊並允許使用右鍵單擊來顯示模式。

爲了要做到這一點,你需要屏蔽所有的東西,一個默認的點擊會做使用preventDefault()stopPropagation()

$("[data-toggle='modal']").click(function (e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
}); 

你要綁定的模式開啓功能到之後右鍵單擊事件,但不顯示上下文菜單。

$("[data-toggle='modal']").on("contextmenu", function(e) { 
    e.preventDefault(); // don't show the context menu 
    $("#changeTime").modal("show"); // show the modal window 
}) 

Here's a CodePen of it working

+0

請閱讀我的代碼的第一行,它完全一樣。它的工作原理我知道,但如果我嘗試打開引導模式,右鍵不會被阻止。唯一的區別是你使用了一個ID,但這不是我想要做的選擇。但謝謝你的回答:) – 2014-10-08 16:21:24

+0

@BrianBak哇,謝謝你指出。也許我誤解了這個問題。你可以在上下文中提供一些HTML,供我查看嗎? – helllomatt 2014-10-08 16:28:09

+0

我編輯了我的問題,但我不確定這會幫助你,這是一個非常典型的模式。感謝您嘗試:) – 2014-10-08 16:34:29