验证不允许输入数字,逗号,点和空格的文本区域

时间:2013-05-29 04:53:34

标签: javascript validation restriction

我已放置一个文本框,我想对其加以限制。

只允许使用数字,逗号,点输入文本区域和空格。

1 个答案:

答案 0 :(得分:2)

您可能会以很多不同的方式面对这个问题。大多数人在完成打字后可能会删除用户输入。但是我几年前所做的事情(使用,但应该很容易改写):

Element.prototype.watchInput = function(data){
    if(Object.isString(data))
        data = {allow:data};

    var data = Object.extend({
        letters: true,
        numbers: true,
        allow: '_'
     }, data || { });

     $(this).observe('keypress', function(e){
        setTimeout(function(){
            var elem = $(Event.element(e));
            var value = elem.getValue();
            var input = value.substr(value.length-1).toLowerCase(); // last character
            var replace = '';

            var remove = true;
            if(data.letters && 'abcdefghijklmnopqrstuvwxyz'.include(input)) remove = false;
            if(data.numbers && '01234567890'.include(input)) remove = false;
            if(data.allow && data.allow.include(input)) remove = false;

            if(remove){
                elem.setValue(value.gsub(input, replace));
            }
        }, 3);
    });
    return this;
}

只需将其应用于您的输入/ textarea:

即可使用此功能
$('myInput').watchInput({letters:false,allow:',.'});

将在任何keypress上观察该元素。由于keypress事件没有直接接收客户端输入,我们必须稍等一下(在我的情况下为3毫秒)。 之后,我们验证客户端输入的最后一个字符,并在它无效的情况下将其删除。

我知道,这不是最漂亮的代码,但我认为这个想法值得传播。


Here is a preview上面的设置。