验证文本区域是否允许输入数字、逗号、点和空格

Validate text area for input numeric, comma, dot and space not allowed

本文关键字:数字 逗号 空格 输入 区域 文本 是否 许输入 验证      更新时间:2023-09-26

我已经放置了一个文本框,我想对它进行限制。

文本区只允许输入数字、逗号、点,不允许输入空格

您可能以许多不同的方式面对这个问题。大多数人可能会在用户完成输入后删除用户输入。但这是我几年前做过的尝试(使用prototype.js,但应该很容易重写):

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

使用它只需将它应用到您的输入/文本区域:

$('myInput').watchInput({letters:false,allow:',.'});

该元素将在任何keypress上被观察到。由于按键事件不直接接收客户机输入,我们必须等待一会儿(在我的例子中是3毫秒)。在此之后,我们验证客户端输入的最后一个字符,并在无效的情况下删除它。

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


相关文章: