如何在我的输入文本字段中使用jQuery禁用粘贴( Ctrl + V )选项?
答案 0 :(得分:166)
这适用于IE FF Chrome正常...我还没有测试过其他浏览器
$(document).ready(function(){
$('#txtInput').on("cut copy paste",function(e) {
e.preventDefault();
});
});
修改:正如webeno所指出的,.bind()
已被弃用,因此建议改为使用.on()
。
答案 1 :(得分:21)
编辑:差不多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中触发,而是使用keydown。
答案 2 :(得分:9)
从JQuery 1.7开始,您可能希望使用on方法
$(function(){
$(document).on("cut copy paste","#txtInput",function(e) {
e.preventDefault();
});
});
答案 3 :(得分:4)
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 :(得分:4)
我在Angular项目中尝试了这个,没有jQuery就可以正常工作。
<input type='text' ng-paste='preventPaste($event)'>
在剧本部分:
$scope.preventPaste = function(e){
e.preventDefault();
return false;
};
在非角度项目中,使用&#39; onPaste&#39;而不是&#39; ng-paste&#39;和&#39;事件&#39;不知道&#39; $ event&#39;。
答案 5 :(得分:2)
以下代码将禁用整页的剪切,复制和粘贴。
$(document).ready(function () {
$('body').bind('cut copy paste', function (e) {
e.preventDefault();
});
});
可以在此处找到完整的教程和工作演示 - Disable cut, copy and paste using jQuery
答案 6 :(得分:1)
QName QNAME_INITIATOR = QName.createQName(NamespaceService.DEFAULT_URI, "initiator");
$(document).ready(function(){
$('#txtInput').on("cut copy paste",function(e) {
e.preventDefault();
});
});
答案 7 :(得分: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
的来源答案 8 :(得分:0)
$(document).ready(function(){
$('#txtInput').live("cut copy paste",function(e) {
e.preventDefault();
});
});
在文本框中,实时活动剪切,复制,粘贴事件被阻止,并且效果很好。
答案 9 :(得分:0)
我已经在Chrome浏览器上测试了这个问题,它对我有用。下面是一个解决方案,可以防止文本框中的粘贴代码,也可以防止右键单击。
$(".element-container").find('input[type="text"]').live("contextmenu paste", function (e) {
e.preventDefault();
});
答案 10 :(得分:-1)
$(document).ready(function(){
$('input').on("cut copy paste",function(e) {
e.preventDefault();
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" />
&#13;