JavaScript的问题是NaN

时间:2015-08-13 00:56:51

标签: javascript

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

3 个答案:

答案 0 :(得分:5)

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

当字符串转换为数字时,将删除任何前导零。

最好使用能够正确验证各种电话号码的图书馆:https://github.com/googlei18n/libphonenumber

Demo

答案 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;  
}