6

我的任务是禁止粘贴文本框。必须只允许粘贴字母字符。我的代码是

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

通过给出 onpaste="return false" 不会粘贴任何值。我怎么解决这个问题?

4

4 回答 4

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);
});

我在这里更新了代码

于 2013-03-27T13:43:45.823 回答
2

之前犯了一些错误,这是有效的:

$('#name').bind('paste', function(){
    var self = this;
    setTimeout(function() {
        if(!/^[a-zA-Z]+$/.test($(self).val()))
            $(self).val('');
    }, 0);    
});

你必须onpaste="return false"从你的html中删除!

可以在这里找到一个工作示例:JS Fiddle

于 2013-03-27T12:34:26.470 回答
2

此代码限制除了输入字段中的数字之外的其他字符的粘贴。在将值粘贴到输入字段时,我正在使用正则表达式测试该值,如果条件为真,则将设置该值,否则我'我清空输入值。在我的情况下,我必须限制除数字之外的其他字符,您可以根据您的要求更改正则表达式

$(".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-12T04:52:24.930 回答
0

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

有关更多详细信息,请参阅此问题

于 2013-03-27T12:34:38.777 回答