发表于: 2017-06-23 22:24:54

1 1037


【JS-task10】如何进行表单验证?

小课堂【成都第140期】

分享人:王帅

一.背景介绍

 JavaScript 可在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。以减轻后台数据传送压力,提高数据传送的质量和效率。

  • HTML5自带的表单验证属性
  • js代码
  • js第三方插件

二.知识剖析

验证时间

H5自带的表单验证属性

小例子

js代码

if/switch,或者正则表达式,DOM操作

缺点:代码量大,耗时多
优点:相比于第三方库,可以减少加载的js文件大小,样式灵活
如果网站的表但很少,或者格式简单,或者对性能的要求高,可以手工写

利用js第三方插件

优点:全站适用,手工代码量少

缺点:有可能加重服务器负担,样式相对固定

三.常见问题

1.表单验证常见的验证信息

2.不同的方法分别是什么写法?

四.解决方案

表单验证常见信息

  • 是否为空(必填/选填)
  • 字符长度(用户名,密码,姓名,电话,邮编,身份证)
  • 大小写
  • 标点,符号
  • 是否支持中文
  • 格式(邮箱,手机,银行卡)
  • 两次密码
  • 链接

主要介绍三大类写法,分别是:js原生写法、angular js的表单验证写法、angular插件ng-message写法。

五.编码实战

1.js原生写法

<form name="a" onsubmit="return test()">
   <input type="text" name="b" placeholder="输入不超过5个字符"><!--onsubmit表示表单提交时执行一段js代码,当该事件触发的函数中返回false时,表单就不会被提交,不能掉了return,否则表单永远会提交。-->
   <br>
   <input type="submit" name="Submit" value="check">
</form>
<br>
<script language="javascript">
   function test(){
       if(document.a.b.value==null || document.a.b.value==""){
           alert("请输入用户名");
           return false;
       }
       if(document.a.b.value.length>5) {
           alert("不能超过5个字符!");
           return false; //阻止表单提交
       }
   }
</script>
                       

2.angularJs ng-show写法

<div ng-app="myApp">
    <form  ng-controller="validateCtrl" name="myForm" novalidate>
   <p>邮箱:<br>
       <input type="email" name="email" ng-model="email" required >
       <span style="color:red" ng-show="myForm.email.$error.required">邮箱是必须的。</span>
       <span style="color:red" ng-show="myForm.email.$dirty && myForm.email.$invalid"><!--ng-show 指令 true 时显示指定的 HTML 元素,$dirty表示表单有填写记录,$invalid字段内容是非法的-->
           <span ng-show="myForm.email.$error.email">非法的邮箱地址。</span>
       </span>

   </p>
   <p>
       <input type="submit" ng-disabled="myForm.email.$dirty && myForm.email.$invalid"><!--ng-disabled 中的表达式返回 true 则表单字段将被禁用-->
   </p>
</form>
</div>
<script>
   var app = angular.module('myApp', []);
   app.controller('validateCtrl', function($scope) {
   });
</script>


4.angularjs ng-message(angular表单验证插件)(推荐)

<h2>angular-messages </h2>
<div ng-app='app' >
   <form  name="myForm" class="form-horizontal" novalidate>
        <label>是否填写、字符长短、邮箱格式</label><br>
        <input type="email" placeholder="ng-Messages测试" name="name" ng-model="username.name" ng-minlength=3 ng-maxlength=20 required >
   <div style="color:red">
       <div ng-messages="myForm.name.$error">
           <div ng-message="required">必填项</div>
           <div ng-message="minlength">字符太短小于3</div>
           <div ng-message="maxlength">字符太长大于20</div>
           <div ng-message='email'>正确的邮箱格式</div>
</div>
   </div>
</form>
<script type="text/javascript">
       angular.module("app", ['ngMessages']);
</script>


6.拓展思考

其他的插件

BootstrapValidator

教程

7.更多讨论

8.参考文献

angularJs的表单验证

ng-show指令

AngularJS 输入验证

bootstrap validator插件使用流程

HTML 5 input required 属性



今天完成的事情:

    小课堂知识分享,每次分享都是温习之前学习的知识。今天组内商议想将webpack应用到复盘任务,大家都学习了webpack的一些知识,明天评估一下时间,如果需要花费大量时间学习的话,就不在复盘里面使用了。在禅道上将前台拆完了。韩阳进组后,需要重新分配任务。

  

明天计划的事情

    确定是否在复盘中用webpack

    分配完任务后马上开始复盘

    

遇到的问题:

    webpack的配置有点费劲。。正在研究中,明天继续

    

   

  

收获:node.js和webpack.  




返回列表 返回列表
评论

    分享到