1,什么会触发表单校验
(a)文本框失去焦点
(b)点击按钮
(c)提交表单
2,有哪几种校验方式
(1)同步方式
为空判断,格式判断(包括长度判断)
(2)异步方式
通过ajax(获取jsonp)调用后台接口来校验
下面的校验就会有问题
- inputs.push(
- new TextBox(Cjt.byId('identityTF'), {
- validate: function () {
- if (this.el.value.length == 0) {
- tip.error(me._error.mobile_is_null);
- return false;
- }else if (!util.isMobileNo(this.el.value)){
- tip.error(me._error.mobile_Format_wrong);
- return false;
- }else{
- Cjt.get('/register/findUserIdentify', {uid: this.el.value}, function (resp) {
- console.log(resp);
- if(resp.exists && resp.exists==1){
- tip.error("该手机已注册,您可直接<a href='/wap/login.html' >登录</a>");
- return false;
- }
- });
- }
- return true;
- }
- })
- );
问题:在方法返回之后,ajax还没有执行完毕
解决方法:
- common.findUserIdentify(mobileVal, function () {
- tip.error("该手机已注册,您可直接<a href='/wap/login.html' >登录</a>");
- return false;
- }, function () {
- console.log('开始发送短信');
- Cjt.post('/wap/bindMobile', data, function (resp) {
- console.log(resp);
- if (resp.result) {
- tip.success('验证码已发送,请查收');
- sendCodeBtn.disable($(node));
- me._data.bind.secondCount = 10;
- console.log(me._data);
- me._data.bind.intervalHook = setInterval(SMSbtnTiming, 1000);
- } else {//发送短信验证码成功,开始倒计时
- tip.error(resp.errorMessage);
- }
- })
- })
---------- 2016年5月9日更新 ---------
表单校验规则:
(1)第一次进入表单页面,校验所有输入控件,但是不显示任何错误提示
(2)文本框失去焦点时校验所有输入控件(文本框,复选框等),但是只有本文本框显示错误提示,其他文本框不显示错误提示
(3)取消选中"协议"时,不校验表单,直接使"立即购买"置灰.
因为没有必要校验表单,都不同意协议了,肯定不允许购买.
下单页校验规则:
(a)进入下单页时,校验所有输入控件(文本框,复选框等),决定"立即购买"按钮是否可用,但是不显示任何错误提示;
(b)编辑输入框时,不校验,只有失去焦点才校验,若校验不通过,则显示本输入控件的错误提示;
(c)取消选中"同意《畅捷通租凭服务协议》"时,不校验表单,"立即购买”按钮置灰;
(d)选中"同意《畅捷通租凭服务协议》"校验表单,但是不显示任何错误提示