2013-03-27 23 views
6

我有一项任务来禁用粘贴文本框。只有字母字符必须允许粘贴。 我的代码是如何启用仅适用于字母字符的onpaste

<b>Name</b> 
<input type="text" id="name" onpaste="return false"/> 

通过给onpaste = “返回FALSE” 没有值粘贴。 我该如何解决这个问题?

+0

$('input')。bind('copy paste',function(e){e.preventDefault(); }); – Okky 2013-03-27 12:33:23

+0

这将禁用复制和粘贴 – Okky 2013-03-27 12:33:47

+0

这与[tag:jquery-validate]插件完全无关。已编辑的标签。 – Sparky 2013-03-27 14:36:22

回答

7

尝试此代码

$(".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

2

之前犯了一些错误,这是工作:

$('#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

+0

它不工作..有你的任何其他例子 – Niths 2013-03-27 12:39:31

+0

@Nithu嘿男人,我犯了一些错误。那些是固定的,并得到它的工作! – Rob 2013-03-27 14:00:42

+0

@Nithu它必须工作。请再试一次 – 2013-03-27 15:56:49

0

将您onpaste值的内部函数的调用。然后,在该函数内部,除去非字母字符。

有关更多详细信息,请参见this question

+0

你能举个例子吗? – Niths 2013-03-27 12:42:44

+0

你将如何去除onpaste事件中的非字母字符。在输入值改变之前,'paste'事件被触发。你需要一个超时或其他的东西来修改输入的值 – C5H8NNaO4 2013-03-27 13:45:57

+0

正确,超时被用在引用的“这个问题”链接中。 – WEFX 2013-03-27 19:53:33

2

此代码限制除了在输入数字的其它字符粘贴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); 
    }); 
+0

一个自我解释的答案只是真棒。所以你可以请你解释一下你的答案以及这个代码的工作原理。 – 2018-01-12 05:05:57

+0

这段代码限制了其他字符的粘贴,除了输入字段中的数字。在将值粘贴到输入字段时,我使用正则表达式测试值,如果条件为真,值将被设置,否则我清空输入值。在我的情况下,我不得不限制其他字符与数字分开,您可以根据您的要求更改正则表达式 – 2018-01-12 06:04:55

+0

太棒了!投了一个很好的解释。 – 2018-01-12 06:10:55

相关问题