在JavaScript中使用isNaN时遇到一些麻烦。 用户输入一个电话号码然后检查它的长度,并查看它是否只包含数值。 虽然我可以根据输入的长度让它工作,但我似乎无法得到“是”。工作以检查输入。
$(document).ready(function(){
$('#mobile').on('change', function (e) {
mobile = $("#mobile").val();
test = isNaN(mobile);
if(mobile.length == 10 || mobile.length == 11 && test == true)
{
correct_mobile = true;
}
else
{
alert('incorrect mobile number');
correct_mobile = false;
}
});
});
答案 0 :(得分:5)
假设电话号码是数字不是一个好主意,因为它们可能包含空格,逗号,括号,短划线或加号。例如+61(0)123-456-789
当字符串转换为数字时,将删除任何前导零。
最好使用能够正确验证各种电话号码的图书馆:https://github.com/googlei18n/libphonenumber
答案 1 :(得分:3)
像这样添加括号
if( (mobile.length == 10 || mobile.length == 11) && test == true)
^ ^
否则,只要mobile.length为10,无论测试
,都是如此答案 2 :(得分:1)
isNaN
返回true。如果电话号码仅由数字组成,则isNaN
必须返回false才能使该号码有效。
因此,在您的逻辑中,您不希望test
为真 - 它应该是false
以便验证通过。
if((mobile.length == 10 || mobile.length == 11) && test == false)
{
correct_mobile = true;
}