Ich möchte das Standard contextMenu deaktivieren, wenn ein Benutzer mit der rechten Maustaste auf ein Eingabefeld klickt, damit ich ein benutzerdefiniertes contextMenu anzeigen kann. Allgemein gesagt, es ist ziemlich einfach, das Rechtsklick-Menü zu deaktivieren, indem Sie wie etwas zu tun:jQuery: preventDefault() funktioniert nicht auf Eingabe/Klick-Ereignisse?
$([whatever]).bind("click", function(e) { e.preventDefault(); });
Und in der Tat, ich kann dies tun auf fast jedes Elemente AUSSER für Eingabefelder in FF - Wer weiß, warum oder kann weist mich auf eine Dokumentation hin?
Hier ist der relevante Code, mit dem ich arbeite, danke Jungs.
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:
Sorry, nach dem Lesen der Kommentare Ich weiß, dass ich ein paar Dinge klarstellen sollte.
1) Der obige Code funktioniert ... in gewissem Sinne. Der Code ist in der Lage zu sortieren, welche Schaltfläche angeklickt wurde, es ist einfach egal, dass ich e.preventDefault() sage und das Kontextmenü erscheint immer noch. Mit anderen Worten, wenn Sie einen Alarm auf e.button setzen, erhalten Sie Ihre 1 oder 0 für links und 2 für rechts ... aber es lacht mich nur an und zeigt immer noch das verdammte Standardmenü!
2) Wenn ich den jQuery-Selektor auf ein anderes Element (außer Eingabe) setze, dann funktioniert alles, FF wird den preventDefault() -Aufruf respektieren und das Standard-Rechtsklick-Menü wird nicht angezeigt.
was ist mit nur 'return false'? –
Probieren Sie auch 'e.which' statt' e.button'. – karim79
Könnte verwandt sein http://stackoverflow.com/questions/1489817/jquery-liveclick-firing-for-right-click – scott