2013-07-25 57 views
0

我已經實現了jQuery來驗證郵政編碼。在位置文本框的focusout()事件中。郵政編碼有效時啓用按鈕 - 不起作用

如果郵政編碼無效,則禁用提交按鈕。

我在這裏面臨一個問題。

  1. 用戶輸入無效的郵政編碼,試圖點擊提交,然後按鈕被禁用,並給出錯誤消息。
  2. 用戶將郵政編碼更改爲正確的格式,然後單擊提交按鈕,現在必須啓用按鈕。 --------但在這裏它仍然是禁用的,錯誤信息仍然顯示。 ---------如果您嘗試將焦點更改爲其他輸入字段,則一切正常。

這裏包括

<script type="text/javascript"> 

$("#locationInput").focusout(function(){ 
var value = $("#locationInput").val(); 

//If the value give in location field is numeric, it is guessed to be a zipcode 
if($.isNumeric(value)) 
{ 
    $("#hidden").val("zipcode"); 

    //Zipcode validation for USA 
    var postalCodeRegex = /^([0-9]{5})(?:[-\s]*([0-9]{4}))?$/; 

    if(postalCodeRegex.test(value)) 
    { 
     $("#error").html(""); 
     $("#submitButton").removeAttr("disabled"); 
     var value = $("#hidden").val(); 
     //alert("Valid zipcode"); 
    } 
    else 
    { 
     //alert("Invalid zipcode"); 
     $("#error").html("Please provide a valid zipcode (Ex: 95035) or city name"); 
     $("#submitButton").attr("disabled", "disabled"); 
    } 
} 
else 
{ 
    $("#hidden").val("city"); 
    //alert("false"); 
} 

}); 
</script> 

<br /> 

代碼做任何人知道我錯了。

謝謝。

回答

1

我想,是利用keyUp事件使用戶可以看到的是每一個版本後,當前郵政編碼有效

$("#locationInput").keyup(function(){ 
    if(--validatin here--){ 
     $("#submitButton").removeAttr("disabled"); 
    } else{ 
     $("#submitButton").attr("disabled", "disabled"); 
    } 
}); 

http://api.jquery.com/keyup/

+0

感謝您的快速回復來驗證你的情況郵政編碼的最佳方式。但我已經嘗試過使用keyup事件。在這種情況下,隱藏的值就是存儲。我在這裏錯過了什麼。 – user2617611

+0

你是什麼意思「隱藏價值是存儲」?您可以使用與您之前編寫的相同的代碼,只需將焦點輸出中的事件更改爲鍵盤輸入,並且所有代碼都可以像以前一樣工作,只需在每次按下按鍵後執行驗證。此外,您可以添加超時以防止連續進行多次驗證,當用戶輸入速度較快時,但對於郵政編碼,我不認爲這是必要的。 – IgorCh

+0

非常感謝您的回覆。發現問題(我已經改變了測試變量「value」的值,所以它一直在進入else塊,現在IT工作,都是通過focusout和keyup事件進行的,對於給您帶來的不便,我們感到抱歉。但是我對javascript/jquery很新,我找不到任何更簡單的方法,所以我想我會從基本的開始,我將嘗試在這方面進行更多的探索。 – user2617611