Я хочу отключить контекстное меню по умолчанию, когда пользователь щелкает правой кнопкой мыши поле ввода, чтобы я мог показать пользовательское контекстное меню. Вообще говоря, довольно просто отключить контекстное меню, выполнив что-то вроде:
$([whatever]).bind("click", function(e) { e.preventDefault(); });
И на самом деле, я могу сделать это практически на каждом элементе, КРОМЕ для полей ввода в FF - кто-нибудь знает почему или может указать мне на какую-то документацию?
Вот соответствующий код, с которым я работаю, спасибо, ребята.
HTML:
<script type="text/javascript">
var r = new RightClickTool();
</script>
<div id="main">
<input type="text" class="listen rightClick" value="0" />
</div>
JS:
function RightClickTool(){
var _this = this;
var _items = ".rightClick";
$(document).ready(function() { _this.init(); });
this.init = function() {
_this.setListeners();
}
this.setListeners = function() {
$(_items).click(function(e) {
var webKit = !$.browser.msie && e.button == 0;
var ie = $.browser.msie && e.button == 1;
if(webKit||ie)
{
// Left mouse...do something()
} else if(e.button == 2) {
e.preventDefault();
// Right mouse...do something else();
}
});
}
} // Ends Class
EDIT:
Извините, после прочтения комментариев я понимаю, что должен уточнить некоторые вещи.
1) Код выше работает ... в некотором смысле. Код может отсортировать, по какой кнопке была нажата кнопка, ему просто все равно, что я говорю e.preventDefault (), и по-прежнему появляется меню, вызываемое правой кнопкой мыши. Другими словами, если вы поместите предупреждение на кнопку e.button, вы получите 1 или 0 для левого и 2 для правого ... но он просто смеется надо мной и по-прежнему показывает проклятое меню по умолчанию!
2) Если я установлю селектор jQuery на ЛЮБОЙ другой элемент (кроме ввода), тогда все будет работать, FF будет уважать вызов warnDefault () и меню по умолчанию, вызываемое правой кнопкой мыши, не будет отображаться.