使用jQuery进行表单验证

时间:2010-10-28 02:33:51

标签: jquery

好吧,我在用jQuery验证表单时遇到了问题。我没有使用任何验证框架(例如http://docs.jquery.com/Plugins/Validation),因为我需要在没有任何预构建解决方案的情况下执行此操作(顺便提一下,这是用户要求,Strange)。我有一个文本框,我需要验证任何字符串,但是,该字符串没有数字或特殊字符(例如!“·$%& /()=;,:。 - _),这是一个人名。这是我的代码:

<script type="text/javascript">
    $(document).ready(function(){
      var onlyChars = /^[A-Za-z]+$/;
      var onlyNums = /^[0-9]+$/;
      var mail = /^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/;
      var name = $("#txtname");
      function validateName()
      {
        if (name.val().length > 25)
        {
          alert("Too Longer");
          return false;
        }
        else if (name.val().match(/^[A-Za-z]+$/))
        {
          alert("Error, Pattern Doesn't Match");
          return false;
        }
        else
        {
          return true;
        }
      }
      $("#submitform").submit(function(){
        if (validateName())
        {
         return true;
        }
        else
        {
          return false;
        }
      });
    });
  </script>

第一次验证没问题(如果我写了超过25个字符,触发警报并且提交事件被中止),但是,第二次验证不会这样做。在这种情况下发生两个事件:

  1. 字段,包含不允许的字符“通过”验证并提交表单。

  2. 字段,仅包含允许的字符不通过验证,表单未提交。

  3. 我检查了一切,“两个问题”完全是随机的。

    你可以给我一些帮助吗?

    非常感谢!

    PS:对不起英语,我不是“母语人士”

3 个答案:

答案 0 :(得分:1)

您的代码是 ==&gt;
如果名称匹配正确, “模式不匹配”​​ 看看你的代码:

    else if (name.val().match(/^[A-Za-z]+$/))
//change this to else if (!(name.val().match(/^[A-Za-z]+$/)))
    {
     alert("Error, Pattern Doesn't Match");
     return false;
    }
    else
    {
     return true;
    }

答案 1 :(得分:0)

好的,我会咬人。

仔细看看这段代码:

    else if (name.val().match(/^[A-Za-z]+$/))
    {
      alert("Error, Pattern Doesn't Match");
      return false;
    }

其内容如下:如果名称与模式匹配,则告诉用户它没有,也不提交。你想反过来说:

    else if (!name.val().match(/^[A-Za-z]+$/))
    {
      alert("Error, Pattern Doesn't Match");
      return false;
    }

答案 2 :(得分:0)

你应该使用Firebug并设置一个断点来遍历代码,它可能会给你一个提示,告诉你为何会进入错误的代码块。