貼り付けを無効にする方法(Ctrl+V)入力テキストフィールドの1つでjQueryを使用するオプション?
これはIE FF Chrome=適切に...他のブラウザではテストしていませんが、
_$(document).ready(function(){
$('#txtInput').on("cut copy paste",function(e) {
e.preventDefault();
});
});
_
編集: webeno で指摘されているように、.bind()
は推奨されないため、代わりに.on()
を使用することをお勧めします。
編集:ほぼ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を使用してください。
JQuery 1.7の時点で、代わりにonメソッドを使用できます。
$(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;
});
Angularプロジェクトでこれを試しましたが、jQueryがなくても正常に機能しました。
<input type='text' ng-paste='preventPaste($event)'>
そして、スクリプト部分で:
$scope.preventPaste = function(e){
e.preventDefault();
return false;
};
Non angularプロジェクトでは、「$ event」の「ng-paste」および「event」の代わりに「onPaste」を使用します。
次のコードは、全ページからの切り取り、コピー、貼り付けを無効にします。
$(document).ready(function () {
$('body').bind('cut copy paste', function (e) {
e.preventDefault();
});
});
完全なチュートリアルと作業デモは、ここから入手できます- 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" />
私はchromeブラウザで問題をテストしましたが、それは私のために機能しています。
$(".element-container").find('input[type="text"]').live("contextmenu paste", function (e) {
e.preventDefault();
});
キーイベントをキャッチできます:
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からのソース
$(document).ready(function(){
$('#txtInput').live("cut copy paste",function(e) {
e.preventDefault();
});
});
テキストボックスのライブイベントの切り取り、コピー、貼り付けイベントが防止され、正常に機能します。