簡體   English   中英

確保用戶以JavaScript格式提交的郵政編碼不能少於5個數字

[英]Making sure that a user can't submit less than 5 numbers for zip code in a JavaScript form

我正在建立注冊表,並且需要一種防止用戶提交少於5個郵政編碼的方法。 當我完全注釋掉其他選項的嘗試時,其他功能(確保用戶不會提交任何字母)起作用。 我在最后使用return false,以便表單不會提交,並且我可以測試錯誤的輸入。 很抱歉缺少jsfiddle-出於某種原因,它不會讓我提交表單(我是菜鳥,所以可能是原因)。 這是我的代碼片段:

HTML:

<form name="reg" onSubmit="return formValidation();">    
<p>Zip Code: <input type="text" id="zip" maxlength="5" name="zip"></p>
<input type="submit" id="submitbutton" name="submitbutton" value="Submit" />
<div id="msg"></div> 
</form>

JS:

function formValidation()  
{  
    var zip = document.reg.zip; 
    allnumeric(zip);

function allnumeric(zip)
{   
    var numbers = /^[0-9]+$/;  
    if(zip.value.match(numbers))  
    {  
        document.getElementById("msg").innerHTML=("OK &#x2713;");
        msg.style.color="green";
    }  
    else if (zip.numbers < 5) /*DOES NOT COMPUTE*/
    {
        msg.innerHTML=("Has to be 5 numbers.");
        msg.style.color="red";
    }
    else
    {  
        msg.innerHTML=("Numbers only please.");
        msg.style.color="red";
    }  
};  
    return false;
};

我建議擁抱HTML5

<form name="reg" onSubmit="return formValidation();">
    <p>Zip Code:
        <input type="text" id="zip" pattern="\d{5}" maxlength="5" name="zip" required="required" />
    </p>
    <input type="submit" id="submitbutton" name="submitbutton" value="Submit" />
    <div id="msg"></div>
</form>

小提琴

您需要zip.value.length ,而不是zip.numbers

您還可以使用正則表達式完成整個操作:

var numbers = /^\d{5}$/;  
if(zip.value.match(numbers))  
{  
    document.getElementById("msg").innerHTML=("OK &#x2713;");
    msg.style.color="green";
}  
else
{  
    msg.innerHTML=("Numbers only please.");
    msg.style.color="red";
} 

我認為其他答案涵蓋了您的JS問題的本質,但並不涉及數據質量方面,因為我認為您實際上不應該以這種方式驗證zip。

您肯定會通過嘗試正確的方法來嘗試確保用戶輸入的質量-但僅檢查5個數字可能還不夠。

在成千上萬的地址中,應將4或3位數的郵政編碼視為有效輸入-郵政編碼以一或兩個0開頭。 一些示例包括:

  • 新澤西州布里奇頓08302
  • 紐約州霍爾茨維爾00544
  • Adjuntas,PR 00601(波多黎各的所有郵政編碼均以00開頭)
  • 克里斯琴斯特德(VI)00821

用戶經常忽略前導00/0,這在您的表單中實際上是應允許的-如果用戶收到方便的內嵌驗證消息,告訴他們在不知道的情況下是不正確的,則可能會使您的工作流不愉快。

第二個可能的缺陷(同樣取決於您的工作流程)是人們也可能會輸入zip + 4 當您可能會獲得完整的9時,您可能不想將它們限制為僅5。

這意味着您的JS測試必須進行更新以允許組合使用,但最終產品會更可靠。 至少,我建議在表單的一部分中包含示例郵政編碼(占位符文本或類似內容),其中包括'00'大小寫,以便用戶知道期望的內容。 要允許輸入可選的+4,請將您的正則表達式更新為:

var numbers = ^\d{5}(-\d{4})?$;  
if(zip.value.match(numbers))  
{
    ....
}
else
{
    ...
}

最后,確保您捕獲正確的郵政編碼並正確地將其與地址相關聯的最終方法是驗證整個內容(與郵政編碼的長度無關)。 您自己制作和維護或使用第三方的這些驗證服務(例如,我的公司-http: //www.qas.com/products/on-demand-address-validation.htm )可以加快地址的獲取,並確保它是有效的-應對3、4或5位數的郵政編碼,使用+4缺失來增強地址,更正郵政編碼或其他地址元素中的拼寫錯誤。

希望對您有幫助,祝您好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM