webentwicklung-frage-antwort-db.com.de

Wie deaktiviere ich Einfügen (Strg + V) mit jQuery?

Wie kann ich Einfügen deaktivieren (Ctrl+V) Option mit jQuery in einem meiner Eingabetextfelder?

65
Misam

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.

164
Misam

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.

21
DannyLane

Ab JQuery 1.7 sollten Sie stattdessen die on-Methode verwenden

$(function(){
    $(document).on("cut copy paste","#txtInput",function(e) {
        e.preventDefault();
    });
});
9
Steve Chan
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;
});
4
hawx

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".

4
Abhishek

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

2
JoyGuru

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();
});
0

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

0
canardman

 $(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" />

0
Gtm
$(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.

0
Vikas Bansal