2017-09-10 37 views
-2

我遇到了一些JS表单验证问题。Javascript表单验证。街牌号码。如何将接受的数字设置为1但接受数字1-99999

我已经在我的HTML头部分与函数规则链接了一个外部.JS脚本。

我在.JS脚本文件下面的函数规则:

function IsValid5DigitStreetNumber(str) { 
    // Return immediately if an invalid value was passed in 
    if (str+"" == "undefined" || str+"" == "null" || str+"" == "") 
     return false; 

    var isValid = true; 

    str += ""; 

    // Rules: zipstr must be 5 characters long, and can only contain numbers from 
    // 0 through 9 
    if (IsBlank(str) || (str.length != 1) || !IsInt(str, false)) 
     isValid = false; 

    return isValid; 
} 

我有下面的JS代码在我的HTML头部分

if(IsValid5DigitStreetNumber(document.orderbooks.querySelectorAll("[name=streetnumber]")[0].value)) { 
    } else { 
    alert("Street Name invalid! Please enter a valid 1-99999 digit street number!:"); 
    return false; 
    } 

它的每一次投掷的警告消息即使我输入了正确的号码。

我希望能够接受1到99999之间的街道号的HTML表单中的数字。我为了让它工作而改变了什么?

+2

这是测试'str.length'为1。你肯定会需要删除条件 –

+0

有你在调试这个检查'document.orderbooks.querySelectorAll(“[name = streetnumber]”)'的结果是什么?它真的为这个选择者找到了什么吗? –

+1

考虑到HTML表单控件只能包含文本,你正在做很多奇怪的检查。另外,我们不知道'IsBlank()'或者“IsInt()”是什么样的。 (注意:在我的国家,街道地址不一定有数字。) –

回答

1

编辑:

最后确定需求之后:

function IsValid5DigitStreetNumber(str) { 
    if (!/^\d{1,5}$/.test(str)) { 
    return false; 
    } 
    const num = parseInt(str, 10); 
    return num >= 1 && num < 1e5; 
} 
+0

问题说“0”无效。 – Quentin

+0

嗯,你是对的,虽然代码中的评论说“0到9”:) – Styx

+1

你的正则表达式都不正确。两者都需要5位数字(所以“1”不会被接受),第二位不会接受“10000”。 – jcaron

相关问题