zoukankan      html  css  js  c++  java
  • 优化表单数据的JS校验

    在平常的web开发中,我经常需要在客户端对表单的数据进行验证。比如,我们验证表单输入的内容不为空:

    <form action="" method="post">
        名称:<input type="text" name="name"/>
        密码:<input type="text" name="password"/>
        <input type="submit" value="确认" onclick="return validate()"/>
    </form>
    1
    根据以往的经验,我们会写出如下的JS验证代码:
    <script type="text/javascript">
       function validate() {
          var form document.forms[0];
          if(form.name.value==null&&form.name.value="") {
         alert("名称不能为空");
         return false;
          }
          if(form.password.value==null&&form.password.value="") {
         alert("密码不能为空");
         return false;
          }
          return true;
       }
    </script>

      但是,现在我有一个业务追求:我要在页面取得的表单数据有很多,比如有十几二十项数据吧,那么我们要在JS代码中重复的写一部分代码,这样就将页面的代码拉得很长,以至于代码很不优雅。这里,我们用另一种面向对象的思维来看待这个问题。

      首先,我们观察:验证的代码只有两个地方在改变,form的域和alert弹出的内容,所以我们这里就将其抽象出来:

    function FormFiled(filename,desc) {
        this.name = name;
        this.desc = desc;
    }

      然后我在用组装字符串的方法来验证:

    function validate() {
        var list = new Array(
            new FormFiled(“name”,“名称”),
            new FormFiled(“password”,“密码”),
        )
        for(var i=0;i<list.length;i++) {
            //这里组装一个字符串,相当于value = form.name.value
            var value = eval("form."+list[i].name+".value");
            if(value==null || value="") {
                alert(list[i].desc+"不能为空");
                return false;
            }
        }
        return true;
    }

      用以上方法来验证的话,增加表单域的验证的时候,只需要在list中添加一些对象就可以了,这样就可以大大减少代码量,页面代码也更优雅。

  • 相关阅读:
    我的第一个可用的Windows驱动完成了
    据说是一种很古老的方法
    起一卦,测今天工作,问题不少
    起一卦,找房子,马上没房子住了
    哈哈哈哈,我竟然发现了个MSDN里面的笔误
    起一卦,看现在我的工程进度怎么样。
    起卦帮同学看工作,应了。
    2012年10月17日帮朋友算得第一卦
    2013年1月13日帮朋友测的第二卦,有些地方没看出来
    bzoj2588 Spoj 10628. Count on a tree
  • 原文地址:https://www.cnblogs.com/ejllen/p/3683454.html
Copyright © 2011-2022 走看看