使用jquery禁用文本字段中字母的复制粘贴
在我的项目中,我有一个只接受数字值的文本字段。但是当我使用ctl+c复制字母表并使用ctl+v粘贴时,它将允许文本字段中的字母表。因此,我使用以下代码禁用复制和粘贴使用jquery禁用文本字段中字母的复制粘贴,jquery,Jquery,在我的项目中,我有一个只接受数字值的文本字段。但是当我使用ctl+c复制字母表并使用ctl+v粘贴时,它将允许文本字段中的字母表。因此,我使用以下代码禁用复制和粘贴 $('input').bind('copy paste', function(e) { e.preventDefault(); }); 但我只想阻止字母。这意味着我想复制粘贴数值而不是字母。此函数用于jQuery。它只允许数字进入文本框 守则: jQuery.fn.filter = function() { $(this
$('input').bind('copy paste', function(e) {
e.preventDefault();
});
但我只想阻止字母。这意味着我想复制粘贴数值而不是字母。此函数用于jQuery。它只允许数字进入文本框 守则:
jQuery.fn.filter = function() {
$(this).keydown(function (e) {
if (e.shiftKey || e.ctrlKey || e.altKey) { // if shift, ctrl or alt keys held down
e.preventDefault(); // Prevent character input
} else {
var n = e.keyCode;
if (!((n == 8) // backspace
|| (n == 46) // delete
|| (n >= 35 && n <= 40) // arrow keys/home/end
|| (n >= 48 && n <= 57) // numbers on keyboard
|| (n >= 96 && n <= 105)) // number on keypad
) {
e.preventDefault(); // Prevent character input
}
}
$(document).mousedown(function(e){
if( e.button == 2 ) {
e.preventDefault(); // Prevent character input
} else {
var n = e.keyCode;
if (!((n == 8) // backspace
|| (n == 46) // delete
|| (n >= 35 && n <= 40) // arrow keys/home/end
|| (n >= 48 && n <= 57) // numbers on keyboard
|| (n >= 96 && n <= 105)) // number on keypad
) {
e.preventDefault();
}
}
});
}
jQuery.fn.filter=function(){
$(此).keydown(函数(e){
if(e.shiftKey | | e.ctrlKey | | | e.altKey){//if按住shift、ctrl或alt键
e、 preventDefault();//防止字符输入
}否则{
var n=e.keyCode;
if(!((n==8)//退格
||(n==46)//删除
||(n>=35&&n=48&&n=96&&n=35&&n=48&&n=96&&n我为您的问题提供了一个有趣的解决方法。对于粘贴事件,您可以使用以下代码:
$("input").on("paste", function(e) {
var that = this;
that.style.color = "#fff"; // field background color
setTimeout(function() {
that.value = that.value.replace(/\D/g, "");
that.style.color = "#000"; // normal field font color
}, 100);
});
演示:试试这个功能。这可能不是你想要的,但你可以从中做点什么。我之前已经做过,并在我的博客上发布过
JS:
$(function(){
$(".numericOnly").bind('keypress',function(e){
if(e.keyCode == '9' || e.keyCode == '16'){
return;
}
var code;
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
if(e.which == 46)
return false;
if (code == 8 || code == 46)
return true;
if (code < 48 || code > 57)
return false;
}
);
$(".numericOnly").bind("paste",function(e) {
e.preventDefault();
});
$(".numericOnly").bind('mouseenter',function(e){
var val = $(this).val();
if (val!='0'){
val=val.replace(/[^0-9]+/g, "")
$(this).val(val);
}
});
});
<body>
<input type="text" id="textBox" class="numericOnly" />
</body>
$(函数(){
$(“.numericOnly”).bind('keypress',函数(e){
如果(e.keyCode=='9'| | e.keyCode=='16'){
返回;
}
var代码;
如果(e.keyCode)代码=e.keyCode;
否则,如果(e.which)代码=e.which;
如果(e.which==46)
返回false;
如果(代码==8 | |代码==46)
返回true;
如果(代码<48 | |代码>57)
返回false;
}
);
$(“.numericOnly”).bind(“粘贴”,函数(e){
e、 预防默认值();
});
$(“.numericOnly”).bind('mouseenter',函数(e){
var val=$(this.val();
如果(val!='0'){
val=val.replace(/[^0-9]+/g,”)
$(this).val(val);
}
});
});
HTML:
$(function(){
$(".numericOnly").bind('keypress',function(e){
if(e.keyCode == '9' || e.keyCode == '16'){
return;
}
var code;
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
if(e.which == 46)
return false;
if (code == 8 || code == 46)
return true;
if (code < 48 || code > 57)
return false;
}
);
$(".numericOnly").bind("paste",function(e) {
e.preventDefault();
});
$(".numericOnly").bind('mouseenter',function(e){
var val = $(this).val();
if (val!='0'){
val=val.replace(/[^0-9]+/g, "")
$(this).val(val);
}
});
});
<body>
<input type="text" id="textBox" class="numericOnly" />
</body>
这将允许您只输入数值。您甚至不能复制粘贴和拖放
查看事件对象并稍微“duckduckgoing”后:
我不知道这是如何跨浏览器的,但如果向后兼容性是没有问题的话,请继续使用它
查看
注:我正在mac os 10.6上使用谷歌chrome 22版
编辑:firefox 13没有clipboardData对象,ie 10也没有,safari 5.1.2支持它(因此它是一个webkit功能)。jaychapani提供的解决方案几乎可以解决该用户的特定问题。但是,它阻止粘贴任何东西,甚至数字
我稍微修改了代码,现在Javascript(a)允许用户粘贴数字,但(b)不允许字母和特殊字符。我从上面的jaychapani示例中删除了以下内容:
$(".numericOnly").bind("paste",function(e) {
e.preventDefault();
});
最后的准则是:
$(function(){
$(".numericOnly").bind('keypress',function(e){
if(e.keyCode == '9' || e.keyCode == '16'){
return;
}
var code;
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
if(e.which == 46)
return false;
if (code == 8 || code == 46)
return true;
if (code < 48 || code > 57)
return false;
}
);
$(".numericOnly").bind('mouseenter',function(e){
var val = $(this).val();
if (val!='0'){
val=val.replace(/[^0-9]+/g, "")
$(this).val(val);
}
});
});
$(函数(){
$(“.numericOnly”).bind('keypress',函数(e){
如果(e.keyCode=='9'| | e.keyCode=='16'){
返回;
}
var代码;
如果(e.keyCode)代码=e.keyCode;
否则,如果(e.which)代码=e.which;
如果(e.which==46)
返回false;
如果(代码==8 | |代码==46)
返回true;
如果(代码<48 | |代码>57)
返回false;
}
);
$(“.numericOnly”).bind('mouseenter',函数(e){
var val=$(this.val();
如果(val!='0'){
val=val.replace(/[^0-9]+/g,”)
$(this).val(val);
}
});
});
这是有效的,当使用Ctl+v或从菜单粘贴时,将拒绝字母和特殊字符。但是,我注意到,有时在用户粘贴不需要的字符后,表单拒绝它们之前会有延迟
通常,拒绝不需要的字符只需一两秒钟。但也有少数情况下,文本清除前等待大约10秒。我猜这可能是因为(a)我正在刷新以观察行为,一些奇怪的缓存行为导致Javascript快速工作的延迟,或者(b)Javascript出现一些循环问题,或者(c)两者的某种组合
不过,在大多数生产环境中,这都可以。我怀疑用户在提交之前是否会反复刷新页面
不过,我想知道是否有更为理想的解决方案。我们欢迎您提出改进建议。我已经更新了jaychapani的答案。
这里我添加了对箭头键的支持。并防止按下%
&
(
键)
$("input").bind('keypress', function (e) {
if (e.keyCode == '9' || e.keyCode == '16') {
return;
}
var code;
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
if (e.which == 46)
return false;
if (e.which == 33 || e.which == 64 || e.which == 35 || e.which == 36 || e.which == 37 || e.which == 94 || e.which == 38 || e.which == 42 || e.which == 40 || e.which == 41)
return false;
if (code == 8 || code == 46)
return true;
if (code == 37 || code == 38 || code == 39 || code == 40)
return true;
if (code < 48 || code > 57)
return false;
});
$("input").bind("paste", function (e) {
e.preventDefault();
});
$("input").bind('mouseenter', function (e) {
var val = $(this).val();
if (val != '0') {
val = val.replace(/[^0-9]+/g, "")
$(this).val(val);
}
});
$(“输入”).bind('keypress',函数(e){
如果(e.keyCode=='9'| | e.keyCode=='16'){
返回;
}
var代码;
如果(e.keyCode)代码=e.keyCode;
否则,如果(e.which)代码=e.which;
如果(e.which==46)
返回false;
如果(e.which==33 | e.which==64 | e.which==35 | e.which==36 | e.which==37 | e.which==94 | e.which==38 | e.which==42 | e.which==40 | e.w