我希望我的文本框只有浮点值,并过滤掉任何符号和字母,我找到的最近的解决方案是:
jQuery(".sow-items .discovery_repeat input.hours").live("keyup", function(e) {
$(this).val($(this).val().replace(/[^\d]/, ''));
});
但它也过滤掉小数点。如何从上面的过滤器或任何新建议中排除小数?
答案 0 :(得分:2)
试试这个:
jQuery(".sow-items .discovery_repeat input.hours").live("keyup", function(e) {
$(this).val($(this).val().replace(/[^\d.]/g, ''));
});
答案 1 :(得分:1)
/\b[-+]?[0-9]*\.?[0-9]+\b/g
或/^[-+]?[0-9]*\.?[0-9]+$/
应该可以解决问题,除非你想在那里允许使用“1.4E-15”这样的数字。
http://www.regular-expressions.info/floatingpoint.html对这种不寻常的案例有一些建议。
答案 2 :(得分:1)
jQuery(".sow-items .discovery_repeat input.hours").live("keyup", function(e) {
var newVal = $(this).val().replace(/[^\d.]/, '').split(".");
if ( newVal.length>2 ) newVal.length = 2; newVal.join(".");
$(this).val(newVal);
});
@Dave Newton:只有一个.
..
答案 3 :(得分:0)
您需要匹配非数字或非点数,并且需要转义点
jQuery(".sow-items .discovery_repeat input.hours").live("keyup", function(e) {
$(this).val($(this).val().replace(/[^\d]|[^\.]/, ''));
});