2013-03-21 10 views
5

Sie müssen verhindern, kopieren einfügen in einem Textfeld mit jquery. Wie wird es implementiert?verhindert Kopieren einfügen mit jquery

<table> 
    <tr> 
    <h:inputlabel value="Actual"></h:inputlabel> 
     <td> 
     <h:inputtext id="Actual" styleClass="input-tex" value="#bean.customer"></h:inputtext> 
     <td> 
    </tr> 
<table> 
+3

Nur sicherstellen, dass dies nicht als "Sicherheitsmaßnahme" gemeint ist, da Sie es leicht umgehen können, indem Sie Java Script deaktivieren, den Quellcode überprüfen, Screenshots und vieles mehr. – Moak

+0

im Einfügen-Ereignis hinzufügen e.preventDefault() -Methode –

Antwort

11

Hier gehen: Disable Cut, Copy and Paste function for textbox using jQuery

$(document).ready(function(){ 
    $('#Actual').bind("cut copy paste",function(e) { 
     e.preventDefault(); 
    }); 
}); 

Hinweis: Opera unterstützen nicht ausschneiden, kopieren und Ereignisse einfügen vor der Version 12.10

+0

Ich bin angenehm überrascht, diese Ereignisse in FF + GC unterstützt zu finden. Beachten Sie jedoch, dass sie von Opera nicht unterstützt werden (und ich denke nicht, dass jQuery das ändern könnte). –

+0

Ja, es funktioniert auch in Opera .. Sie können dies in Opera versuchen .. [Working Demo] (http://jsbin.com/uyuzo) und es funktioniert. –

+0

Seit wann? [dotorro.com] (http://help.dottoro.com/ljuimtmq.php) behauptet, dass dies nicht der Fall ist. –

1

Es ist die am meisten und 'offizielle' Weg, um Mach es mit Jquery.

$(document).ready(function() { 
    var ambit = $(document); 

    // Disable Cut + Copy + Paste (input) 
    ambit.on('copy paste cut', function (e) { 
     e.preventDefault(); //disable cut,copy,paste 
     return false; 
    }); 
}); 

Allerdings funktioniert es nur auf und wie ich lese wird nicht auf einigen Opera-Versionen unterstützt. Alles außerhalb einer Eingabe darf kopiert werden.

Wenn das, was Sie vollständig deaktivieren möchten, paranoic mode: on, Sie diese Methode verwenden können:

$(document).ready(function() { 
    var ambit = $(document); 

    // Disable Cut + Copy + Paste (input) 
    ambit.on('copy paste cut', function (e) { 
     e.preventDefault(); //disable cut,copy,paste 
     return false; 
    }); 

    // Disable Cut + Copy + Paste and Browser Admin Tools (all document) 
    ambit.keydown(function (e) { 
     var forbiddenCtrlKeys = new Array('c', 'x', 'v', 'ins', 'u'); 
     var forbiddenShiftKeys = new Array('del', 'ins', 'f2', 'f4', 'f7'); 
     var forbiddenCtrlShiftKeys = new Array('k', 'i', 'm', 's', 'j'); 
     var keyCode = (e.keyCode) ? e.keyCode : e.which; 

     var isCtrl, isShift; 
     isCtrl = e.ctrlKey; 
     isShift = e.ctrlShift; 

     string = getKeyCodeString(keyCode); 

     if (string == 'f12') 
     { 
      e.preventDefault(); 
      return false; 
     } 

     if (isCtrl && !isShift) { 
      for (i = 0; i < forbiddenCtrlKeys.length; i++) { 
       if (forbiddenCtrlKeys[i] == string) { 
        e.preventDefault(); 
        return false; 
       } 
      } 
     } 

     if (!isCtrl && isShift) { 
      for (i = 0; i < forbiddenShiftKeys.length; i++) { 
       if (forbiddenShiftKeys[i] == string) { 
        e.preventDefault(); 
        return false; 
       } 
      } 
     } 

     if (isCtrl && isShift) { 
      for (i = 0; i < forbiddenCtrlShiftKeys.length; i++) { 
       if (forbiddenCtrlShiftKeys[i] == string) { 
        e.preventDefault(); 
        return false; 
       } 
      } 
     } 

     return true; 
    }); 

    var getKeyCodeString = function(keyCode) 
    { 
     var string; 
     switch (keyCode) { 
      case 45: 
       string = 'ins'; break; 
      case 46: 
       string = 'del'; break; 
      case 113: 
       string = 'f2'; break; 
      case 115: 
       string = 'f4'; break; 
      case 118: 
       string = 'f7'; break; 
      case 123: 
       string = 'f12'; break; 
      default: 
       string = String.fromCharCode(keyCode); 
       break; 
     } 
     return string.toLowerCase(); 
    } 
}); 

Und was ist mit dem Kontextmenü?

$(document).ready(function() { 
    var ambit = $(document); 

    // Disable Contextual Menu 
    ambit.on('contextmenu', function (e) { 
     e.preventDefault(); 
     return false; 
    }); 

Und was ist mit Mobile?

$(document).ready(function() { 
    var ambit = $(document); 

    // Disable Tap and Hold (jQuery Mobile) 
    ambit.on('taphold', function (e) { 
     e.preventDefault(); 
     return false; 
    }); 
}); 

Hoffe es hilft! Korrekturen und Verbesserungen sind willkommen!

+0

Wer '' bind() '' mehr verwendet ... – Shikkediel

+1

@Shikkediel ... Sie haben Recht !!! .bind() ist veraltet. Ich werde es mit .on() aktualisieren – Equiman

0

Da Jquery 1.9 weiter Live-Event nicht unterstützt wird, können wir "on" für denselben Zweck verwenden.