Issues with JavaScript isNaN

Issues with JavaScript isNaN

本文关键字:isNaN JavaScript with Issues      更新时间:2023-09-26

在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;  
        }   
      });
    });

假设电话号码是数字,因为它们可能包含空格、逗号、括号、破折号或加号,这不是一个好主意。Eg +61 (0) 123-456-789

加上任何前导零将在字符串转换为数字时被删除。

最好使用可以正确验证各种电话号码的库,例如:https://github.com/googlei18n/libphonenumber

演示

添加圆括号

if( (mobile.length == 10 || mobile.length == 11) && test == true)  
    ^                                          ^

否则,它将为真,只要移动。长度为10,无论test

isNaN如果输入不是数字则返回true。对于仅由数字组成的电话号码,isNaN必须返回false才能使该号码被认为是有效的。

因此,在您的逻辑中,您不希望test为真-它应该是false,以便验证通过。

if((mobile.length == 10 || mobile.length == 11) && test == false)  
{     
    correct_mobile = true;  
}