我尝试使用Javascript函数来验证文本框中的整数值。但我找不到任何最好的方法来验证它。
(整数和浮点值是可以接受的,但不允许使用字母表。)
答案 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模仿它的行为。人们经常尝试执行此监听键盘事件并取消除数字之外的任何输入。这实际上很难完全正确地实现,因为我们可以粘贴输入,动态验证浮点数并不是那么简单。所以我建议你在提交之前进行验证。
至于验证本身,您可以使用两种功能 - parseInt
和parseFloat
。不过要小心,有一些微妙的问题。始终将10作为第二个参数传递给parseInt,并记住js将尝试解析任何数据。例如,这个 - “121212sdsds”不会被视为html5输入中的数字[type =“number”]。但是将使用parseFloat解析为121212。
我应该提到的最后一件事是NaN
。 NaN是一种特殊类型的数字(是的,它实际上是一个数字,因为typeof NaN == "number"
),它不等于任何东西,甚至是它自己。无法解析输入时,parseInt和parseFloat都返回NaN。由于NaN!= Nan检查某些东西的正确方法是NaN是调用函数isNaN
。
我想我可以告诉js中的数字验证:)