禁用右键单击表单字段级别

时间:2011-02-01 11:58:41

标签: javascript

我需要通用功能,可以禁用对表单字段的右键单击。

4 个答案:

答案 0 :(得分:2)

document.oncontextmenu = function(e) {
  var el = window.event.srcElement || e.target;
  var tp = el.tagName || '';
  if ( tp.toLowerCase() == 'input' || tp.toLowerCase() == 'select' || tp.toLowerCase() == 'textarea' ){
    return false;
  }
};

答案 1 :(得分:1)

无论如何都无法做到 - 不可靠和跨浏览器(FF,IE,Chrome,Opera)。

在IE和FF中有特定于浏览器的黑客攻击,但是有一个更深层次的问题:你想要实现什么?限制这样的用户体验不会带来任何好处(他们已经拥有您宝贵的代码,否则他们将看不到页面),并使用户烦恼。

答案 2 :(得分:0)

可能是一个坏主意(因为它违反用户接受的标准行为而使用户烦恼)但你可以在jQuery中这样做:

$(function() {
     $(this).bind("contextmenu", function(e) {
         e.preventDefault();
     });
}); 

答案 3 :(得分:0)

如果您需要在表单字段中使用特殊的上下文菜单,则可以使用此JQuery插件:

http://www.javascripttoolbox.com/lib/contextmenu/index.php

像这样使用:

var menu1 = [
      {
        'Option 1': function(menuItem,menu) { alert("You clicked Option 1!"); } 
      },
      {
        'Option 2': function(menuItem,menu) { alert("You clicked Option 2!"); } 
      }
];
$(function() {
  $('#myform:input').contextMenu(menu1,{theme:'vista'});
});

因此,当用户点击表单中包含id为'myform'的任何输入字段时,将显示个人上下文菜单。