长话短说,我试图验证一个手机领域。我已经添加
isNaN
和parseInt
用于检查字段中的" "
但是说
以下内容永远不会证实真实......我错过了什么?
if(isNaN(parseInt(phone))){
error.text("Sorry but this phone field requires numbers only");
return false;
} else {
return true;
}
它总是失败......即使我在现场输入一个号码并提交,它也永远不会显示。 我总是得到错误mssg。
编辑: 我正在测试表单中的输入值,phone
是字段的名称。
答案 0 :(得分:10)
将JS字符串强加给数字的各种方法及其后果:
我个人使用*1
因为它很短,但仍然很突出(与一元+不同),并且或者给我用户输入或完全失败的内容。当我知道时,我只会使用parseInt()
,最后会忽略非数字内容,或者当我需要解析非基数为10的字符串时。
修改:根据您的评论,如果使用phone.val()
修正了
每当执行var foo = $('…');
时,foo
变量都会引用一个或多个元素的jQuery对象。您可以通过var fooEl = foo[0];
或var fooEl = foo.get(0);
从中获取第一个实际的DOM元素...但即便如此,仍仍然具有DOM元素,而不是该元素的特定属性。
对于表单输入,您需要从DOM元素中获取.value
,这是jQuery .val()
方法的作用。
答案 1 :(得分:9)
parseInt
有时候有点奇怪:
> parseInt("123-456-789")
123
幸运的是,您可以通过以下方式解决您的问题:
> Number("123-456-789")
NaN
答案 2 :(得分:7)
如果第一个字符无法转换为数字,则parseInt仅返回NaN。
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt
答案 3 :(得分:0)
我看到了Number()
的建议,但是仍然可以允许-21
或123.456
之类的东西。检查字符串中是否存在非数字的最佳方法是这样的:
function hasNonDigit(str){
return /\D/g.test(str.toString());
}
console.log(hasNonDigit("123-456-7890"));
console.log(hasNonDigit("1234567890"));