在文本框中验证double类型

时间:2012-11-01 16:48:56

标签: javascript jquery html

检查文本框中是否输入了有效的双重型号“##。##”的最佳方法是什么?因此,如果输入一次小数,请不要让用户再次输入。

正则表达式是最好的方法吗?

非常感谢任何帮助

3 个答案:

答案 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,那里有很多选择。其中大多数都涉及正则表达式检查。

使用正则表达式与有效数字匹配很容易,如果您的主要问题是阻止进一步插入字符,请继续阅读。

您需要做的就是以下几点。

  1. 您需要一个整数字符映射来“允许”输入。
  2. 防止除与字符映射匹配的键之外的所有其他输入。
  3. 如果已经存在,则进一步阻止'点'插入。
  4. 我假设您允许以点开头的模式,只要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");
    };
}​);​

Check it out on fiddle