我有一项任务来禁用粘贴文本框。只有字母字符必须允许粘贴。 我的代码是如何启用仅适用于字母字符的onpaste
<b>Name</b>
<input type="text" id="name" onpaste="return false"/>
通过给onpaste = “返回FALSE” 没有值粘贴。 我该如何解决这个问题?
我有一项任务来禁用粘贴文本框。只有字母字符必须允许粘贴。 我的代码是如何启用仅适用于字母字符的onpaste
<b>Name</b>
<input type="text" id="name" onpaste="return false"/>
通过给onpaste = “返回FALSE” 没有值粘贴。 我该如何解决这个问题?
尝试此代码
$(".alphabetOnly").bind('paste', function(e) {
var self = this;
setTimeout(function(e) {
var val = $(self).val();
if (val != '0') {
if (val.match(/^[0-9]+$/) != null) {
$(".alphabetOnly").val("");
}
$(this).val(val);
}
}, 0);
});
我已经更新了代码here
之前犯了一些错误,这是工作:
$('#name').bind('paste', function(){
var self = this;
setTimeout(function() {
if(!/^[a-zA-Z]+$/.test($(self).val()))
$(self).val('');
}, 0);
});
你必须删除您的HTML onpaste="return false"
!
工作示例可以在这里找到:JS Fiddle
将您onpaste值的内部函数的调用。然后,在该函数内部,除去非字母字符。
有关更多详细信息,请参见this question。
此代码限制除了在输入数字的其它字符粘贴field.On值粘贴到输入字段中,I”使用正则表达式测试值,如果条件为真,值将被设置,否则我正在清空输入值。在我的情况下,我不得不限制其他字符与数字分开,你可以改变正则表达式基于您的要求
$(".numbersOnly").bind('paste', function(e) {
var self = this;
setTimeout(function(e) {
var val = $(self).val();
if (val != '0') {
var regx = new RegExp(/^[0-9]+$/);
if (!regx.test(val)) {
$(".numbersOnly").val("");
}
$(this).val(val);
}
}, 0);
});
一个自我解释的答案只是真棒。所以你可以请你解释一下你的答案以及这个代码的工作原理。 – 2018-01-12 05:05:57
这段代码限制了其他字符的粘贴,除了输入字段中的数字。在将值粘贴到输入字段时,我使用正则表达式测试值,如果条件为真,值将被设置,否则我清空输入值。在我的情况下,我不得不限制其他字符与数字分开,您可以根据您的要求更改正则表达式 – 2018-01-12 06:04:55
太棒了!投了一个很好的解释。 – 2018-01-12 06:10:55
$('input')。bind('copy paste',function(e){e.preventDefault(); }); – Okky 2013-03-27 12:33:23
这将禁用复制和粘贴 – Okky 2013-03-27 12:33:47
这与[tag:jquery-validate]插件完全无关。已编辑的标签。 – Sparky 2013-03-27 14:36:22