Wie kann ich die Option Einfügen ( Ctrl+ V) mit jQuery in einem meiner Eingabetextfelder deaktivieren ?
Wie kann ich die Option Einfügen ( Ctrl+ V) mit jQuery in einem meiner Eingabetextfelder deaktivieren ?
Antworten:
Dies funktioniert jetzt für IE FF Chrome ordnungsgemäß ... Ich habe jedoch nicht für andere Browser getestet
$(document).ready(function(){
$('#txtInput').on("cut copy paste",function(e) {
e.preventDefault();
});
});
Bearbeiten: Wie von webeno hervorgehoben , .bind()
ist es veraltet, daher wird empfohlen, .on()
stattdessen zu verwenden .
Bearbeiten: Es ist fast 6 Jahre später, wenn ich mir das jetzt anschaue, würde ich diese Lösung nicht empfehlen. Die akzeptierte Antwort ist definitiv viel besser. Mach mit!
Das scheint zu funktionieren.
Sie können Tastaturereignisse mit jQuery abhören und verhindern, dass das Ereignis abgeschlossen wird, wenn es die gesuchte Tastenkombination ist. Beachten Sie, überprüfen Sie 118 und 86 ( Vund v)
Arbeitsbeispiel hier: http://jsfiddle.net/dannylane/9pRsx/4/
$(document).ready(function(){
$(document).keydown(function(event) {
if (event.ctrlKey==true && (event.which == '118' || event.which == '86')) {
alert('thou. shalt. not. PASTE!');
event.preventDefault();
}
});
});
Update: Tastendruck wird im IE nicht ausgelöst, verwenden Sie stattdessen Keydown.
Ab JQuery 1.7 möchten Sie möglicherweise stattdessen die on-Methode verwenden
$(function(){
$(document).on("cut copy paste","#txtInput",function(e) {
e.preventDefault();
});
});
jQuery('input.disablePaste').keydown(function(event) {
var forbiddenKeys = new Array('c', 'x', 'v');
var keyCode = (event.keyCode) ? event.keyCode : event.which;
var isCtrl;
isCtrl = event.ctrlKey
if (isCtrl) {
for (i = 0; i < forbiddenKeys.length; i++) {
if (forbiddenKeys[i] == String.fromCharCode(keyCode).toLowerCase()) {
return false;
}
}
}
return true;
});
Ich habe dies in meinem Angular-Projekt versucht und es hat ohne jQuery gut funktioniert.
<input type='text' ng-paste='preventPaste($event)'>
Und im Skriptteil:
$scope.preventPaste = function(e){
e.preventDefault();
return false;
};
Verwenden Sie in nicht eckigen Projekten 'onPaste' anstelle von 'ng-paste' und 'event' anstelle von '$ event'.
Der folgende Code deaktiviert das Ausschneiden, Kopieren und Einfügen von der ganzen Seite.
$(document).ready(function () {
$('body').bind('cut copy paste', function (e) {
e.preventDefault();
});
});
Das vollständige Tutorial und die Arbeitsdemo finden Sie hier - Deaktivieren Sie das Ausschneiden, Kopieren und Einfügen mit jQuery
$(document).ready(function(){
$('#txtInput').on("cut copy paste",function(e) {
e.preventDefault();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="txtInput" />
Sie können das Schlüsselereignis abfangen:
function checkEventObj ( _event_ ){
// --- IE explorer
if ( window.event )
return window.event;
// --- Netscape and other explorers
else
return _event_;
}
document.keydown = function(_event) {
var e = checkEventObject(_event);
if( e.ctrlKey && (e.keyCode == 86) )
window.clipboardData.clearData();
}
Nicht getestet, könnte aber helfen.
Quelle aus Comentcamarche und Zakaria
window.clipboardData.clearData()
funktioniert nur in dh. Wenn Sie das Ereignis abfangen, können Sie auch die Standardeinstellung verhindern und false zurückgeben. das würde das durch die Tastatur initiierte Einfügen effektiv deaktivieren. Ich würde das Beispiel posten, aber ich bin zu faul und außerdem bist du schon so nah dran.
$(document).ready(function(){
$('#txtInput').live("cut copy paste",function(e) {
e.preventDefault();
});
});
Beim Ausschneiden, Kopieren und Einfügen von Live-Ereignissen in Textfeldern wird ein Ereignis verhindert und es funktioniert gut.
$(document).ready(function(){...})
könnte auf gleichwertig umgeschrieben werden $(function(){...})
.
Ich habe das Problem im Chrome-Browser getestet und es funktioniert für mich. Unten finden Sie eine Lösung, um das Einfügen von Code in Ihr Textfeld und das Klicken mit der rechten Maustaste zu verhindern.
$(".element-container").find('input[type="text"]').live("contextmenu paste", function (e) {
e.preventDefault();
});
$(document).ready(function(){
$('input').on("cut copy paste",function(e) {
e.preventDefault();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" />