需要防止使用jquery复制粘贴到文本框中。 如何实现它?使用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>
需要防止使用jquery复制粘贴到文本框中。 如何实现它?使用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>
这里去:Disable Cut, Copy and Paste function for textbox using jQuery
$(document).ready(function(){
$('#Actual').bind("cut copy paste",function(e) {
e.preventDefault();
});
});
注:歌剧不支持剪切,复制和版本12.10
我很惊喜地发现FF + GC支持的这些事件。但是请注意,Opera不支持它们(我不认为jQuery可以改变这一点)。 – 2013-03-21 05:34:36
是的,它也可以在Opera中使用..你可以在Opera中试试这个.. [Working Demo](http://jsbin.com/uyuzo),它可以工作。 – 2013-03-21 05:38:56
从什么时候开始? [dotorro.com](http://help.dottoro.com/ljuimtmq.php)声称它没有。 – 2013-03-21 05:41:05
这是最和 '官方' 的方式来之前粘贴事件用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;
});
});
但是,它只适用于,因为我读了一些Opera版本不支持。允许输入外的所有内容都被复制。
如果你想完全禁用什么,paranoic mode: on
,你可以用这个方法:
$(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();
}
});
又是怎么回事上下文菜单?
$(document).ready(function() {
var ambit = $(document);
// Disable Contextual Menu
ambit.on('contextmenu', function (e) {
e.preventDefault();
return false;
});
那么移动?
$(document).ready(function() {
var ambit = $(document);
// Disable Tap and Hold (jQuery Mobile)
ambit.on('taphold', function (e) {
e.preventDefault();
return false;
});
});
希望它有帮助!更正和改进是欢迎!
谁使用'.bind()'了... – Shikkediel 2015-10-06 23:31:03
@Shikkediel ...你是对的! .bind()已被弃用。我将使用.on()更新它 – Equiman 2016-08-30 22:45:26
由于jquery 1.9以前的直播活动不受支持,我们可以使用“on”来达到同样的目的。
$('#Actual').on("cut copy paste", function (e) {
e.preventDefault();
});
只要确保这并不意味着'安全措施',因为您可以通过禁用java脚本,检查源代码,截图以及其他方法轻松绕过它。 – Moak 2013-03-21 05:29:54
添加e.preventDefault()方法 – 2016-09-11 08:08:24