parseInt总是返回NaN?

som*_*dow 8 javascript nan parseint

长话短说,我试图验证手机领域.香港专业教育学院添加了isNaN和在现场parseInt检查," "但说

以下从未证实真实......我错过了什么?

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

    }
Run Code Online (Sandbox Code Playgroud)

它总是失败......即使我在现场输入一个数字并提交,它也永远不会成立.我总是得到错误mssg.

编辑:我正在测试表单中的输入值,phone是字段的名称.

rfu*_*duk 10

parseInt 有时有点奇怪:

> parseInt("123-456-789")
123
Run Code Online (Sandbox Code Playgroud)

幸运的是,您可以用以下方法解决您的问题:

> Number("123-456-789")
NaN
Run Code Online (Sandbox Code Playgroud)


Phr*_*ogz 10

将JS字符串强加给数字的各种方法及其后果:

使用上述技术转换各种字符串的结果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元素而不是它的特定属性.

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


Rob*_*vey 7

如果第一个字符无法转换为数字,则parseInt仅返回NaN.

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt