Wie kann ich Einfügen deaktivieren (Ctrl+V) Option mit jQuery in einem meiner Eingabetextfelder?
Dies funktioniert jetzt für IE FF Chrome ordnungsgemäß ... Ich habe es jedoch nicht für andere Browser getestet
$(document).ready(function(){
$('#txtInput').on("cut copy paste",function(e) {
e.preventDefault();
});
});
Bearbeiten: Wie von webeno hervorgehoben, ist .bind()
veraltet, daher wird empfohlen, stattdessen .on()
zu verwenden.
Edit: Es ist fast 6 Jahre später, jetzt 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 (V und 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, stattdessen Keydown verwenden.
Ab JQuery 1.7 sollten Sie 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 ausprobiert und es hat auch ohne jQuery funktioniert.
<input type='text' ng-paste='preventPaste($event)'>
Und im Skriptteil:
$scope.preventPaste = function(e){
e.preventDefault();
return false;
};
Verwenden Sie in einem nicht eckigen Projekt "onPaste" anstelle von "ng-paste" und "event" anstelle von "$ event".
Mit dem folgenden Code werden Ausschneiden, Kopieren und Einfügen von der gesamten Seite deaktiviert.
$(document).ready(function () {
$('body').bind('cut copy paste', function (e) {
e.preventDefault();
});
});
Das vollständige Tutorial und die funktionierende Demo finden Sie hier - Ausschneiden, Kopieren und Einfügen mit jQuery deaktivieren
Ich habe das Problem mit Chrome-Browser getestet und funktioniert für mich. Mit Hilfe von Beowow können Sie den Einfügecode in Ihrem Textfeld und das Klicken mit der rechten Maustaste verhindern.
$(".element-container").find('input[type="text"]').live("contextmenu paste", function (e) {
e.preventDefault();
});
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
$(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" />
$(document).ready(function(){
$('#txtInput').live("cut copy paste",function(e) {
e.preventDefault();
});
});
Bei Textfeld Live-Events wird das Ausschneiden, Kopieren und Einfügen eines Events verhindert und es funktioniert gut.