繁体   English   中英

HTML输入框中的输入验证

[英]Input validation in input box in HTML

我有一个输入框,只能接受0到100之间的值(允许浮动)。 有什么功能可以将输入框中的字符串值转换为十进制,以便我可以比较它?

我已经尝试过parseFloat,但是如果字符串=“ 10Hi”,parseFloat仍将返回10。

您可以使用parseFloat函数:

parseFloat('12.5')

为了进行验证,您可以使用正则表达式:

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

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

好吧, isFinite呢?

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

您可以使用以下条件:

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,因为这也是此处的有效十六进制数检查

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

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

https://jsfiddle.net/fwf3eumk/

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

例如

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM