web-dev-qa-db-ja.com

jQueryで貼り付け(Ctrl + V)を無効にする方法は?

貼り付けを無効にする方法(Ctrl+V)入力テキストフィールドの1つでjQueryを使用するオプション?

66
Misam

これはIE FF Chrome=適切に...他のブラウザではテストしていませんが、

_$(document).ready(function(){
   $('#txtInput').on("cut copy paste",function(e) {
      e.preventDefault();
   });
});
_

編集: webeno で指摘されているように、.bind()は推奨されないため、代わりに.on()を使用することをお勧めします。

167
Misam

編集:ほぼ6年後、これを見て今このソリューションをお勧めしません。受け入れられた答えは間違いなくはるかに優れています。それで行く!


これはうまくいくようです。

JQueryで keyboard events をリッスンし、探しているキーコンボの場合はイベントが完了しないようにすることができます。注、118および86(V そして v

ここでの作業例: 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();
         }
    });
});

更新:IEではkeypressが起動しません。代わりにkeydownを使用してください。

21
DannyLane

JQuery 1.7の時点で、代わりにonメソッドを使用できます。

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

Angularプロジェクトでこれを試しましたが、jQueryがなくても正常に機能しました。

<input type='text' ng-paste='preventPaste($event)'>

そして、スクリプト部分で:

$scope.preventPaste = function(e){
   e.preventDefault();
   return false;
};

Non angularプロジェクトでは、「$ event」の「ng-paste」および「event」の代わりに「onPaste」を使用します。

4
Abhishek

次のコードは、全ページからの切り取り、コピー、貼り付けを無効にします。

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

完全なチュートリアルと作業デモは、ここから入手できます- jQuery を使用して、カット、コピー、およびペーストを無効にします

2
JoyGuru
 $(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" />
1
Gtm

私はchromeブラウザで問題をテストしましたが、それは私のために機能しています。

   $(".element-container").find('input[type="text"]').live("contextmenu paste", function (e) {

    e.preventDefault();
});
0

キーイベントをキャッチできます:

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

テストされていませんが、役立つ可能性があります。

comentcamarche およびZakariaからのソース

0
canardman
$(document).ready(function(){
  $('#txtInput').live("cut copy paste",function(e) {
    e.preventDefault();
  });
});

テキストボックスのライブイベントの切り取り、コピー、貼り付けイベントが防止され、正常に機能します。

0
Vikas Bansal