2015-03-18 79 views
1

我的文本框总是返回字段不是一个数字,即使它是。表单验证JavaScript数字总是返回false

HTML

<form name = garysForm> 
Number of adults: <input type="number" size="6" id="ofAdults" name="adultBox" min="0" max="50" required><br> 
Number of children: <input type="number" size="6" id="ofChild" min="0" max="50" required><br> 
Date:<input type="text" name="date" id="datepicker" required><br> 
<Button type="button" onclick="BookingFare(); return false;">Calculate</button><br> 
</form> 

的Javascript

var field = document.forms["garysForm"]["adultBox"].value; 

    if (isNaN(field.value)) { 
      alert('Please enter a valid number'); 

     } 
+0

你没有选择任何东西,这个名字是无效的,因为它没有被引用,并且使用'document.forms'是一个非常糟糕的方式来获取一个ID为 – adeneo 2015-03-18 23:40:07

+1

的元素。另外,你调用'value' * ** TWICE ***,这是真正的问题 – adeneo 2015-03-18 23:42:20

+0

它应该是'如果(isNaN(field)){' – adeneo 2015-03-18 23:42:42

回答

0

我解决它通过使用.elements方法。

var field = document.forms["garysForm"].elements["adultBox"].value; 

然后,你需要考虑一个SPACE也被认为是一个数字reference。所以我应用了以下逻辑。

var field = document.forms["garysForm"].elements["adultBox"].value; 
console.log(field) 
if (field=='') { 
    alert('Please enter a valid number'); 
} 
else if (isNaN(field)) { 
    alert('Please enter a valid number'); 
} 
else { 
    alert(field) 
}  

DEMO

*,jQuery是仅用于演示目的。

我希望你觉得这个答案有帮助。 谢谢。

1

你打电话field.value当你分配价值领域。

var field = document.forms["garysForm"]["adultBox"].value; 

if (isNaN(field.value)) { 

试试这个:

var field = document.forms["garysForm"]["adultBox"]; 

if (isNaN(field.value)) { 
+0

试过,它只是打破了它,它甚至不传递消息 – alex23 2015-03-18 23:45:44

+0

指着我蹲在地上 – brianvaughn 2015-03-18 23:54:33