2014-04-04 70 views
2

我想禁用鼠標右鍵單擊並且不改變光標位置在Javascript中。這裏是我的代碼示例:禁用鼠標右鍵單擊並且不改變光標位置在Javascript中

<input id="PhoneNumber" style="width: 160px;" /> 

$('#PhoneNumber').mousedown(function (e) { 
    if (event.which > 1) { 
     e.preventDefault(); 
    } else { 
     //Do some work 
    } 
}); 

但這不起作用。當我用鼠標右鍵點擊時,它會改變插入位置。

[已更新] 適用於鍍鉻。不工作的IE

+0

適用於鍍鉻。不適用於IE –

回答

1

您需要訂閱MouseUp事件也:

$('#PhoneNumber').on('mousedown mouseup', function (e) { 
     if (event.which > 1) { 
      e.preventDefault(); 
     } else { 
      //Do some work 
     } 
    }); 
+0

適用於Chrome瀏覽器。不工作在IE –

+0

@ArmenMkrtchyan哪個版本的IE? –

0

您應該使用contextmenu事件並返回false:

$('#PhoneNumber').on("contextmenu", function(e) { 
     return false; 
    }); 
+0

無法正常工作。光標改變它在該演示中的位置 –

0

您可以使用contextmenu

$('#PhoneNumber').contextmenu(function (e) { 
     e.preventDefault(); 
}); 

Working Demo

+0

光標改變了它的位置 –

+0

@ArmenMkrtchyan:我不認爲你可以做到這一點。那是文本框的默認行爲。 –

0
$('#PhoneNumber').bind("cut copy paste contextmenu", function (e) { 
      e.preventDefault(); 
      var pos = ($(this).getCursorPosition()); 
      var index = $('#PhoneNumber').val().length; 
      if (index < 5) { 
       index = 5; 
      } 
      $(this).caretTo(index); 
     }); 

     $('#PhoneNumber').click(function() { 
      var pos = ($(this).getCursorPosition()); 
      var index = $('#PhoneNumber').val().length; 
      if (index < 5) { 
       index = 5; 
      } 
      $(this).caretTo(index); 
     }); 

     $('#PhoneNumber').on('mousedown mouseup', function (e) { 
      if(event.which!=1) { 
       e.preventDefault(); 
       e.returnValue = false; 
      } 
     });