JavaScript存在的问题
在JavaScript中使用isNaN有点麻烦。 用户输入一个电话号码,然后我检查它的长度,看它是否只包含数值。 虽然我可以让它在输入长度内工作,但我似乎无法让“isNaN”工作以检查输入JavaScript存在的问题,javascript,Javascript,在JavaScript中使用isNaN有点麻烦。 用户输入一个电话号码,然后我检查它的长度,看它是否只包含数值。 虽然我可以让它在输入长度内工作,但我似乎无法让“isNaN”工作以检查输入 $(document).ready(function(){ $('#mobile').on('change', function (e) { mobile = $("#mobile").val(); test = isNaN(mobile); if(mobi
$(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;
}
});
});
像这样添加括号
if( (mobile.length == 10 || mobile.length == 11) && test == true)
^ ^
否则,只要mobile.length是10,不管测试结果如何,这都是正确的。假设电话号码是数字不是一个好主意,因为其中可能包含空格、逗号、括号、破折号或加号。Eg+61(0)123-456-789 加上字符串转换为数字时,任何前导零都将被删除 最好使用能够正确验证各种电话号码的库,例如:
isNaN
如果输入不是数字,则返回true。如果电话号码仅由数字组成,isNaN
必须返回false才能将该号码视为有效
因此,在您的逻辑中,您不希望test
为true-它应该为false
,以便验证通过
if((mobile.length == 10 || mobile.length == 11) && test == false)
{
correct_mobile = true;
}
你为什么认为有问题?输入和预期输出是什么?我认为问题与你的情况有很大关系<代码>a | | b和c的计算结果为
a | |(b和c)
。即,您正在测试输入是10个任意字符还是11个数字。但是没有细节,这只是一个猜测。请用var
声明您的局部变量。也不要使用布尔值的松散比较<对于true
、1
、'1'
、[1]
和任何其他可以强制为数字1
的对象,code>test==true为true
或false
,但如果输入不是数字,则isNaN
返回true。因此,如果输入无效,test
为真。根据你的条件,如果test==true
那么correct\u mobile=true
…我想你搞错了。它应该是test==false
为这个建议干杯,我们将检查它。