2012-04-17 72 views
5

长话短说,我试图验证手机领域。香港专业教育学院添加 的isNaNparseInt检查在该领域的" "但说parseInt总是返回NaN?

这绝不下面以验证true..what我缺少什么?

if(isNaN(parseInt(phone))){ 
     error.text("Sorry but this phone field requires numbers only"); 
     return false; 
    } else { 
    return true; 

    } 

它总是失败......即使我在字段中输入数字并提交,它也不会读取真。 我总是得到错误mssg。

编辑:我从一个测试形式输入值,phone是字段的名称。

+0

适用于我,例如电话=“5”。你的测试输入值是多少? – Bergi 2012-04-17 02:44:27

+0

对不起,即时测试从表格输入vals – somdow 2012-04-17 02:45:10

+0

您应该在这个问题中也包含您的html。这可能会帮助我们调试它。 – webnesto 2012-04-17 02:46:17

回答

7

parseInt有时是有点古怪:

> parseInt("123-456-789") 
123 

幸运,也许可以与解决您的情况:

> Number("123-456-789") 
NaN 
10

各种方式来coerse JS字符串的数字,及其后果:

Results of converting various strings using the above techniques http://phrogz.net/JS/string_to_number.png

我个人使用*1,因为它是短暂的输入,但依然突出(不像一元+),并给我什么用户输入或完全失败。我只使用parseInt()当我知道将有非数字内容末尾要忽略,或者当我需要解析非基10字符串。

编辑:基于您的评论,如果用phone.val()固定它,然后

  1. 你是使用jQuery(你从来没提过,并且应该有),以及
  2. 实际上你/有jQuery对象,包装一个或多个DOM元素(可能只是一个)。

无论你做什么var foo = $('…');那么foo变量引用一个或多个元素的jQuery对象。你可以通过var fooEl = foo[0];var fooEl = foo.get(0); ...得到第一个真正的DOM元素,但即使如此,你仍然仍然有有一个DOM元素,而不是一个特定的属性。

对于表单输入,您需要从DOM元素获取.value,这是jQuery .val()方法的作用。