JavaScript存在的问题

JavaScript存在的问题,javascript,Javascript,在JavaScript中使用isNaN有点麻烦。 用户输入一个电话号码,然后我检查它的长度,看它是否只包含数值。 虽然我可以让它在输入长度内工作,但我似乎无法让“isNaN”工作以检查输入 $(document).ready(function(){ $('#mobile').on('change', function (e) { mobile = $("#mobile").val(); test = isNaN(mobile); if(mobi

在JavaScript中使用isNaN有点麻烦。 用户输入一个电话号码,然后我检查它的长度,看它是否只包含数值。 虽然我可以让它在输入长度内工作,但我似乎无法让“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;  
        }   
      });
    });

像这样添加括号

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
为这个建议干杯,我们将检查它。