【问题标题】:Why is my validation method for zip codes not working correctly为什么我的邮政编码验证方法无法正常工作
【发布时间】:2016-10-14 15:10:08
【问题描述】:

我有一个表单,它使用asp:requiredvalidator 和一些自定义 javascript 在任何未正确填写的字段周围应用红色 1px 边框。

这很好用,但现在我希望能够在用户正确填写字段时立即删除红色边框。

为此,我使用 Jquery 的 focusout() 方法将用户输入与正则表达式进行比较。到目前为止,我在除邮政编码之外的每个字段(包括电子邮件验证)上都能正常工作。出于某种原因,我编写的所有验证方法都可以正常工作,除了邮政编码。

这是一个有效的电子邮件验证示例

        if (id == "email1" || id == "email2") {
            emailValue = e.target.value;
            if (validateEmail(emailValue)) {
                $("#" + id).removeClass("ErrorControl");
            }
            else {

            }
        }

        function validateEmail(email) {
            var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
            return re.test(email);
        }

这非常有效,只要字段丢失焦点且电子邮件有效,红色边框就会消失。

但我无法让我的 zip 验证器正常工作,即使它的工作方式几乎完全相同。

这是不工作的 zip 示例

            //Zip code also require special validation to confirm
            if (id == "zip") {
                zipValue = e.target.value;
                if (validateZip(zipValue)) {
                    $("#" + id).removeClass("ErrorControl")
                }
            }

        //Simple zip validator
        function validateZip(zip) {
            var re = /^[0-9]{5}$/;
            return re.test(zip);
        }

不幸的是,即使我只在其中输入字母,它仍然会删除红色边框!为什么会这样?

https://jsfiddle.net/hhjvstp3/

因为我无法在 jsfiddle 上运行 asp 验证器,所以我已经给 email 和 zip 提供了一个 ErrorControl 类。这和我描述的完全一样。电子邮件验证良好,邮政编码无论如何都会删除边框。

【问题讨论】:

  • 调试时发生了什么?
  • 您应该分享您的代码示例,包括 jsfiddle 中的 html。
  • 行尾缺少分号:$("#" + id).removeClass("ErrorControl");
  • 您的 validateZip 功能似乎工作正常,错误可能在其他地方,请提供完整代码
  • 我正在努力创建一个默认情况下具有 css 类并使用 javascript 删除的小提琴(因为我的 asp:validators 不起作用,因此我的表单不会有任何红色边框)我会在它工作后立即更新帖子

标签: javascript validation


【解决方案1】:

Updated fiddle

您可以看到哪一行从 zip 中删除了 ErrorControl 类

 if (id == "firstname" || id == "lastname" || id == "address1" || id == "city" || id == "amount") { 
    //id == "zip" shouldn't be here
     if (e.target.value != "") {
          $("#" + id).removeClass("ErrorControl");
      }
 }

【讨论】:

  • 哇。我太笨了,错过了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-07-20
  • 2014-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多