在HTML中的输入框中输入验证

时间:2015-06-17 08:49:37

标签: javascript html angularjs

我有一个输入框,只能取0到100之间的值(允许浮点数)。 是否有任何函数可以将输入框中的字符串值转换为十进制,以便我可以比较它?

我已经尝试过parseFloat但是如果string =“10Hi”,parseFloat仍会返回10.

5 个答案:

答案 0 :(得分:0)

您可以使用parseFloat功能:

parseFloat('12.5')

用于验证,您可以使用正则表达式:

var isValid = (inputStr.match(/^-?\d*(\.\d+)?$/));

if (isValid == null)
    alert('in valid');
else 
    alert('valid');

答案 1 :(得分:0)

嗯,isFinite怎么样?

isFinite(10)      // true
isFinite('10.1'); // true
isFinite('10Hi')  // false

答案 2 :(得分:0)

您可以使用以下条件:

var str = "12.5", number;

if(isFinite(str) && str.indexOf(".") == -1)
     number = parseFloat(str);

<强>更新

如果您只需要获取确切的数字,那么您可以使用如下所示:

var str = "12.5", number;

if(isFinite(str))
     number = +str;

因此它总是返回包含浮动值的有限数。

如果str为'0x5f',则返回值为95,因为它也是有效的十六进制数check here

答案 3 :(得分:0)

$(".decimal").each(function(){
    var v = $(this).val();

    //pattern: integer or decimal
    var valid = /^\d+$/.test(v) || /^\d+\.\d+$/.test(v);
});

https://jsfiddle.net/fwf3eumk/

答案 4 :(得分:0)

要检查输入是否为0到100(包括0和100)的十进制浮点数,可以使用正则表达式排除'0x5e'之类的字符串(这是0到100之间数字的有效表示),然后是字符串可以转换为数字以测试该值是否在允许的范围内。

e.g。

function testValue(n) {
    var re = /^\s*\d*(\d\.?|\.?\d)\d*\s*$/;
    var num = Number(n)
    return re.test(n) && n >= 0 && n <= 100;
}

['12','12.','.12','12.2','0x5e'].forEach(function(v) {
  console.log(v + ' : ' + testValue(v));
});

12 : true
12. : true
.12 : true
12.2 : true
0x5e : false