表单校验的二三事

简介:

1,什么会触发表单校验

(a)文本框失去焦点



 

(b)点击按钮



 

(c)提交表单

 

2,有哪几种校验方式

(1)同步方式

为空判断,格式判断(包括长度判断)

(2)异步方式

通过ajax(获取jsonp)调用后台接口来校验

 

下面的校验就会有问题

Js代码   收藏代码
  1. inputs.push(  
  2.             new TextBox(Cjt.byId('identityTF'), {  
  3.                 validate: function () {  
  4.                     if (this.el.value.length == 0) {  
  5.                         tip.error(me._error.mobile_is_null);  
  6.                         return false;  
  7.                     }else if (!util.isMobileNo(this.el.value)){  
  8.                         tip.error(me._error.mobile_Format_wrong);  
  9.                         return false;  
  10.                     }else{  
  11.                         Cjt.get('/register/findUserIdentify', {uid: this.el.value}, function (resp) {  
  12.                             console.log(resp);  
  13.                             if(resp.exists && resp.exists==1){  
  14.                                 tip.error("该手机已注册,您可直接<a href='/wap/login.html' >登录</a>");  
  15.                                 return false;  
  16.                             }  
  17.                         });  
  18.                     }  
  19.                     return true;  
  20.                 }  
  21.             })  
  22.         );  

 问题:在方法返回之后,ajax还没有执行完毕

解决方法:

Js代码   收藏代码
  1. common.findUserIdentify(mobileVal, function () {  
  2.                 tip.error("该手机已注册,您可直接<a href='/wap/login.html' >登录</a>");  
  3.                 return false;  
  4.             }, function () {  
  5.                 console.log('开始发送短信');  
  6.                 Cjt.post('/wap/bindMobile', data, function (resp) {  
  7.                     console.log(resp);  
  8.                     if (resp.result) {  
  9.                         tip.success('验证码已发送,请查收');  
  10.                         sendCodeBtn.disable($(node));  
  11.                         me._data.bind.secondCount = 10;  
  12.                         console.log(me._data);  
  13.                         me._data.bind.intervalHook = setInterval(SMSbtnTiming, 1000);  
  14.                     } else {//发送短信验证码成功,开始倒计时  
  15.                         tip.error(resp.errorMessage);  
  16.                     }  
  17.                 })  
  18.             })  

 ---------- 2016年5月9日更新 ---------

 表单校验规则:

(1)第一次进入表单页面,校验所有输入控件,但是不显示任何错误提示



 

(2)文本框失去焦点时校验所有输入控件(文本框,复选框等),但是只有本文本框显示错误提示,其他文本框不显示错误提示

(3)取消选中"协议"时,不校验表单,直接使"立即购买"置灰.

因为没有必要校验表单,都不同意协议了,肯定不允许购买.

下单页校验规则:
(a)进入下单页时,校验所有输入控件(文本框,复选框等),决定"立即购买"按钮是否可用,但是不显示任何错误提示;
(b)编辑输入框时,不校验,只有失去焦点才校验,若校验不通过,则显示本输入控件的错误提示;
(c)取消选中"同意《畅捷通租凭服务协议》"时,不校验表单,"立即购买”按钮置灰;
(d)选中"同意《畅捷通租凭服务协议》"校验表单,但是不显示任何错误提示
相关文章
|
JavaScript 前端开发
史上最简单的原生JS实现轮播图效果
原生JS实现轮播图效果 上篇文章我们说到了怎样利用原生JS实现Tab切换的效果,现在我们来说一下Tab切换的“升级版”。如何利用原生JS实现轮播图效果。如图: 在这里插入图片描述 HTML代码: &lt;div class=&quot;box&quot;&gt; &lt;img src=&quot;img/0.jpg&quot; alt=&quot;&quot;&gt; &lt;!-- &lt;img src=&quot;img/1.jpg&quot; alt=&quot;&quot;&gt; &lt;img src=&quot;img/2.jpg&quot; alt=&quot;&quot;&gt; &lt;img src=&quot;img/3.jpg&quot; alt=&quot;&quot;&gt; --&gt; &lt;div class=&quot;
史上最简单的原生JS实现轮播图效果
|
前端开发
前端工作总结280-表单验证层级添加
前端工作总结280-表单验证层级添加
96 0
前端工作总结280-表单验证层级添加
|
前端开发 JavaScript 数据库
冇事来学系--Vue2.0中Promise详讲(上)
回调地狱 多层回调函数的相互嵌套,就形成了回调地狱
308 0
|
前端开发
好客租房37-多表单元素优化
好客租房37-多表单元素优化
125 0
好客租房37-多表单元素优化
好客租房16-jsx中的列表渲染
好客租房16-jsx中的列表渲染
94 0
好客租房16-jsx中的列表渲染
|
前端开发
好客租房36-表单处理(3受控组件的示例)
好客租房36-表单处理(3受控组件的示例)
76 0
好客租房36-表单处理(3受控组件的示例)
好客租房17-jsx的样式处理
好客租房17-jsx的样式处理
96 0
好客租房17-jsx的样式处理
|
定位技术 API 容器
好客租房129-百度地图api3使用步骤
好客租房129-百度地图api3使用步骤
150 0
好客租房129-百度地图api3使用步骤
|
前端开发
前端工作总结268-js日期操作
前端工作总结268-js日期操作
129 0
|
前端开发
前端工作总结261-表单验证重置
前端工作总结261-表单验证重置
107 0