检查文本框中是否输入了有效的双重型号“##。##”的最佳方法是什么?因此,如果输入一次小数,请不要让用户再次输入。
正则表达式是最好的方法吗?
非常感谢任何帮助
答案 0 :(得分:1)
您可以像这样使用正则表达式
> "222.22".match(/^\d+.?\d*$/)
["222.22"]
> "222.22.2".match(/^\d+.?\d*$/)
null
您也可以尝试将其转换为数字,例如
> isNaN(Number("22.2.2"))
true
通过转换为数字进行检查的唯一问题或优势是它将允许数字如1e6
> isNaN(Number("1e6"))
false
答案 1 :(得分:1)
如果你正在谈论jQuery,那里有很多选择。其中大多数都涉及正则表达式检查。
使用正则表达式与有效数字匹配很容易,如果您的主要问题是阻止进一步插入字符,请继续阅读。
您需要做的就是以下几点。
我假设您允许以点开头的模式,只要javascript解析它就好像有一个前导零,并且许多开发人员将此视为简写。
同样使用jQuery标记,假设您正在使用jQuery。
$("#Foo").keydown(function(e) {
var c = e.keyCode
, value = $(this).val();
// Prevent insertion if the inserting character is
// 1. a 'dot' but there is already one in the text box, or
// 2. not numerics.
if ( (c == 190 && value.indexOf('.') > -1) || c < 48 || c > 57 ) {
e.preventDefault();
return;
}
});
答案 2 :(得分:0)
如果使用HTML5是一个选项,您可以使用名为“pattern”的新输入类型。
它的工作原理如下:
<input id="numberField" type="text" title="You need to provide a number in the form of 2 integer and 2 decimal digits" pattern="\d{2}\.\d{2}" />
然后,你可以注册一个事件,使元素在失去焦点时不可用,就像这样(使用jQuery):
$("#numberField").blur(function() { $(this).attr("disabled", "disabled"); });
或者,如果您只是想检查该字段包含的是一个数字(任何形式),您可以像这样检查:
$("#numberField").blur(function() {
if (!isNaN(parseInt($(this).val()))) {
$(this).attr("disabled", "disabled");
};
});