我想在用戶右鍵單擊輸入字段時禁用默認的contextMenu,以便顯示自定義的contextMenu。一般來說,它很容易通過做類似禁用右鍵菜單:jQuery:preventDefault()不適用於輸入/點擊事件?
$([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
編輯:
對不起,我讀明白,我要澄清一些事情的意見後。
1)在某種意義上,上面的代碼確實有效。代碼能夠通過點擊哪個按鈕進行排序,它只是不在意我說e.preventDefault()並且右鍵單擊菜單仍然彈出。換句話說,如果你在e.button上放置一個警報,你會得到你的1或0左邊和2右邊......但它只是笑我,仍然顯示該死的默認菜單! 2)如果我把jQuery選擇器放在任何其他元素(除輸入之外),那麼一切都會工作,FF將尊重preventDefault()調用,並且默認的右鍵菜單將不會顯示。
剛剛'返回false'呢? – 2010-04-29 18:08:59
此外,請嘗試'e.which'而不是'e.button'。 – karim79 2010-04-29 18:10:11
可能是相關的http://stackoverflow.com/questions/1489817/jquery-liveclick-firing-for-right-click – scott 2010-05-01 03:52:01