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 />

有谁知道我哪里出错了。

谢谢。

4

1 回答 1

1

我想在您的情况下验证邮政编码的最佳方法是使用 keyup 事件,以便用户可以看到当前邮政编码在每个版本之后是否有效

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

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

于 2013-07-25T19:48:34.170 回答