我已经放置了一个文本框,我想对其进行限制。
文本区只允许输入数字、逗号、点,不允许输入空格。
你可能会以很多不同的方式面对这个问题。大多数人可能会在他完成输入后删除用户输入。但是这是我几年前所做的尝试(使用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
. 由于 keypress 事件不直接接收客户端输入,因此我们必须稍等片刻(在我的情况下为 3 毫秒)。之后,我们验证客户端输入的最后一个字符,并在它无效时将其删除。
我知道,这不是最漂亮的代码,但我认为这个想法值得传播。