仅使用Javascript验证TextBox上的整数和浮点值

时间:2011-07-28 11:14:50

标签: javascript

我尝试使用Javascript函数来验证文本框中的整数值。但我找不到任何最好的方法来验证它。

(整数和浮点值是可以接受的,但不允许使用字母表。)

2 个答案:

答案 0 :(得分:2)

我不确定我是否完全理解这个问题。您是否只是检查以确保只在文本框中键入整数?如果是这样,我会使用reg表达式来检查文本框。类似的东西:

function isNum(elem, msg){
var numericExpression = /^[0-9]+$/;
if(elem.value.match(numericExpression)){
    return true;
}
     else{
    alert(msg);
    elem.focus();
    return false;
}

}

答案 1 :(得分:1)

那么在超现代的浏览器中(今天它只意味着webkit,如果我没有记错的话)就像所谓的html5输入一样。还有一个输入type =“number”。您可以通过以下方式检查是否支持:

function hasInputNumber() {
   var el = document.createElement("input");
   el.setAttribute("type", "number");
   var testval1 = "12121.121";
   var testval2= "1212.asas.a";
   el.value = testval1;
   var test1  = el.value === testval1;
   el.value = testval2;
   var test2 = el.value != testval2;
   return test1 && test2;
}

至于其余部分,您可以使用input type =“number”,并在不支持此功能时尝试使用javascript模仿它的行为。人们经常尝试执行此监听键盘事件并取消除数字之外的任何输入。这实际上很难完全正确地实现,因为我们可以粘贴输入,动态验证浮点数并不是那么简单。所以我建议你在提交之前进行验证。

至于验证本身,您可以使用两种功能 - parseIntparseFloat。不过要小心,有一些微妙的问题。始终将10作为第二个参数传递给parseInt,并记住js将尝试解析任何数据。例如,这个 - “121212sdsds”不会被视为html5输入中的数字[type =“number”]。但是将使用parseFloat解析为121212。​​

我应该提到的最后一件事是NaN。 NaN是一种特殊类型的数字(是的,它实际上是一个数字,因为typeof NaN == "number"),它不等于任何东西,甚至是它自己。无法解析输入时,parseInt和parseFloat都返回NaN。由于NaN!= Nan检查某些东西的正确方法是NaN是调用函数isNaN

我想我可以告诉js中的数字验证:)