我希望这不是一个愚蠢的问题。我希望谷歌有希望,但我今天失败了。
我有一个文本框<input type="text" id="input1" />
,我只想接受输入/^\d+(\.\d{1,2})?$/
。我想绑定一些东西到keydown事件并忽略无效键但charCode不够健壮。有没有一个好的jQuery插件可以做到这一点?
我想要达到的效果是让某人输入'hello world! 12.345'并希望忽略除'12 .34'之外的所有字符,并将文本框改为'12 .34'。希望这很清楚。
感谢。
答案 0 :(得分:0)
我认为你不需要一个插件来做这件事;您可以轻松地附加一个事件并编写一个简单的回调来自己完成这样做:
$('#input1').keyup(function()
{
// If this.value hits a match with your regex, replace the current
// value with a sanitized value
});
答案 1 :(得分:0)
试试这个:
$('#input1').change(function(){
if($(this).data('prevText') == undefined){
$(this).data('prevText', '');
}
if(!isNaN($(this).val())){
$(this).val($(this).data('prevText'))
}
else {
//now do your regex to check the number settings
$(this).data('prevText', $(this).val());
}
})
isNAN
函数检查以确保该值为数字
答案 2 :(得分:0)
$('#input1').bind('keyup', function() {
var val = $(this).val();
if(!val)
return;
var match = val.match(/^\d+(\.\d{1,2})?$/);
if(!match)
return;
//replace the value of the box, or do whatever you want to do with it
$(this).val(match[0]);
});
答案 3 :(得分:0)
答案 4 :(得分:0)
$('input1').keyup(function(){
var val = $(this).val().match(/\d+([.]\d{1,2})?/);
val = val == null || val.length == 0 ? "" : val[0];
$(this).val(val);
});
答案 5 :(得分:0)
你应该看看jQuery validation。您可以定义自己的检查方法like this here。
答案 6 :(得分:0)
我找到了解决方案。
keydown
事件keyup
事件上的有效输入
醇>
因此:
var cache = {};
$(function() {
$("input[regex]").bind("keydown", function() {
var regex = new RegExp($(this).attr("regex"));
if (regex.test($(this).val())) {
cache[$(this).attr("id")] = $(this).val();
}
});
$("input[regex]").bind("keyup", function() {
var regex = new RegExp($(this).attr("regex"));
if (!regex.test($(this).val())) {
$(this).val(cache[$(this).attr("id")]);
}
});
});