表单校验的二三事

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)选中"同意《畅捷通租凭服务协议》"校验表单,但是不显示任何错误提示

时间: 2025-01-19 06:34:44

表单校验的二三事的相关文章

细节思考表单交互设计二 表单校验设计思考

你是否经常碰到在填写表单时,提交无数次却还是无法通过校验的情况;或者你是否在为不知道填写中哪里出现错误而抓狂;再或者你是否碰到过当你填写了一大堆信息,之后点击按钮提交时,校验报错的同时,你发现你所填写的所有的信息都被清空;或者你还碰到过很多很多校验当中出现的问题,那么我们现在就开始进行表单校验设计的思考. 那校验有哪些情况呢? 1. READY? 提到校验,我们往往会联系到提交表单后出现的错误提示类信息,但是其实在填写表单前的提示信息与表单填写校验有着莫大的关系. 此类提示信息能够帮助用户在填写

网页表单交互设计细节:表单校验设计的思考

文章描述:表单交互设计之二--校验思考. 你是否经常碰到在填写表单时,提交无数次却还是无法通过校验的情况:或者你是否在为不知道填写中哪里出现错误而抓狂:再或者你是否碰到过当你填写了一大堆信息,之后点击按钮提交时,校验报错的同时,你发现你所填写的所有的信息都被清空:或者你还碰到过很多很多校验当中出现的问题,那么我们现在就开始进行表单校验设计的思考. 那校验有哪些情况呢? 1. READY? 提到校验,我们往往会联系到提交表单后出现的错误提示类信息,但是其实在填写表单前的提示信息与表单填写校验有着莫

用JSP在客户端生成JavaScript代码来实现表单校验

javascript|js|客户端 今天费了一天时间就是做这个东西,原理很简单,就是用 JSP 在页面的开始部分生成一段代码,如 errorcheck.jsp 中所示,但程序太长,还是费了我不少时间来改写. 主程序是名为 ErrorCheck.java ,有了这个 ErrorCheck 的 Bean,我们就再也不用为了表单校验去写那一大堆烦人的 JavaScript 代码了.ErrorCheck 类已帮我们生成了几乎所有你将会用到的校验方法,如是否为数字,长度的校验,是否为合法email等,你只

用 JSP 在客户端生成 &amp;#106avascript 代码来实现表单校验

js|客户端 用 JSP 在客户端生成 JavaScript 代码来实现表单校验 ●○●○●○●○●○●○●○●○●○●○●○●○●○●○○ 作者:刘湛 日期:2000-01-05 jeru@163.net ●● http://www.cyberlabs.com/~jeru/ ○○ 欢迎访问爪哇人,获取更多资料 ●●○●○●○●○●○●○●○●○●○●○●○●○●○●○ 今天费了一天时间就是做这个东西,原理很简单,就是用 JSP 在页面的开始部分生成一段代码,如 errorcheck.jsp 中

用JSP在客户端生成&amp;#106avascript代码来实现表单校验

js|客户端 今天费了一天时间就是做这个东西,原理很简单,就是用 JSP 在页面的开始部分生成一段代码,如 errorcheck.jsp 中所示,但程序太长,还是费了我不少时间来改写. 主程序是名为 ErrorCheck.java ,有了这个 ErrorCheck 的 Bean,我们就再也不用为了表单校验去写那一大堆烦人的 JavaScript 代码了.ErrorCheck 类已帮我们生成了几乎所有你将会用到的校验方法,如是否为数字,长度的校验,是否为合法email等,你只需在 jsp 页面里调

jquery mobile 表单校验

问题描述 jquery mobile 表单校验 在jquery mobile中,文本框怎么进行校验并弹框,例如当文本框为空时,进行提交,弹出文本框不能为空的提示, 解决方案 可以用jquery-validation框架校验 解决方案二: 可以这样子试试,这是JQuery mobile没用过,不过我猜测和JQuery应该不会有太大的差别吧 $("#submit").click(function() { if ($("#value").val()) { $("

关于ajax异步表单校验的问题

问题描述 关于ajax异步表单校验的问题 登录的jsp页面上有两个form,分别对应邮箱注册和手机号注册两个标签页下的表单,我现在已经完成了ajax的表单校验,在测试的时候出现了这种情况:在手机号注册的标签页下的手机号中填写了手机号,但点击邮箱注册的标签依旧会检验这个手机号是否可以注册.甚至于我只把光标移动到了手机号框里面什么都不填,点击邮箱注册的标签依旧会验证.我想实现的效果是两个标签页互不影响,这个是不是在js代码里实现?怎么实现呢? 解决方案 第一种情况 你的 js 代码写的应该有问题 当

基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解_jquery

表单校验是页面开发中非常常见的一类需求,相信每个前端开发人员都有这方面的经验.网上有很多成熟的表单校验框架,虽然按照它们默认的设计,用起来没有多大的问题,但是在实际工作中,表单校验有可能有比较复杂的个性化的需求,使得我们用这些插件的默认机制并不能完成这些功能,所以要根据自己的需要去改造它们(毕竟自己还不到那个写一个完美的校验框架的层次).我用过formValidation这个校验框架,虽然它跟bootstrap配合地很好,但是校验风格太死板,不太满足个性化的场景:后来我找到了jquery.val

extjs4-Extjs4 表单校验完成后invaldText仍然显示

问题描述 Extjs4 表单校验完成后invaldText仍然显示 定义一个datefiled,手动修改时间格式,表单进行校验,弹出invalidText,然后修改表单值,表单立即进行校验,值正确后框不再显示红色,但是invalidText仍然显示,几秒后才隐藏,如何缩短invalidText隐藏的时间? 解决方案 4.1版本没发现你说的问题,invalidText是出现在输入框后面的红色感叹号后面吧,鼠标移动到感叹号上才会显示invalidText错误信息,楼主是直接显示?是不是给输入对象配置