jQuery MiniUI

标题: mini ui 控件通过自定义校验后表单校验状态的问题 [打印本页]

作者: kisssk    时间: 2014-8-27 17:41:53     标题: mini ui 控件通过自定义校验后表单校验状态的问题

本帖最后由 kisssk 于 2014-8-27 19:25 编辑

在mini ui 中,对某个控件指定了以下校验属性:required="true" vtype="maxLength:10" maxLengthErrorText="输入的编号长度不能超过10个英文字符." requiredErrorText="编号必须输入."
同时指定了自定义的 onvalidation 事件,
在onvalidation 的事件中对控件的值通过ajax到后台进行检查,然后在ajax的success 回调事件中使用以下方式设置控件的状态:

  1. function onFuncCodeValidation(e){
  2.         var value = e.value;
  3.         if(!e.isValid){
  4.                 return;
  5.         }
  6.         if(!isEnglish(value))
  7.         {
  8.                 e.errorText = "编号请输入英文字符.";
  9.                 e.isValid = false;
  10.                 return;
  11.         }
  12.         var param = nui.encode({t:{"code":value}});
  13.         $.ajax({
  14.         url: "xxx.jsp",
  15.         data: param,
  16.         cache: false,
  17.         type: "post",
  18.         contentType: "text/json",
  19.         async: true,
  20.         success: function (text) {
  21.                 var funcObj = nui.get("idFuncCode");
  22.                 var rtv = nui.decode(text);
  23.                 if(rtv.isValid == -1){
  24.                   e.errorText = "编号重复.";
  25.                                                 e.isValid = false;
  26.                 }
  27.         },
  28.         error: function (jqXHR, textStatus, errorThrown) {
  29.             alert(jqXHR.responseText);
  30.             closeWindow();
  31.         }
  32.     });
  33.    
  34.    
  35. }
复制代码

但是表单中的控件却不能够回显对应的校验状态 。

通过另一种方式处理:

  1. function onFuncCodeValidation(e){
  2.         var value = e.value;
  3.         if(!e.isValid){
  4.                 return;
  5.         }
  6.         if(!isEnglish(value))
  7.         {
  8.                 e.errorText = "编号请输入英文字符.";
  9.                 e.isValid = false;
  10.                 return;
  11.         }
  12.         var param = nui.encode({t:{"code":value}});
  13.         $.ajax({
  14.         url: "xxx.jsp",
  15.         data: param,
  16.         cache: false,
  17.         type: "post",
  18.         contentType: "text/json",
  19.         async: true,
  20.         success: function (text) {
  21.                 var funcObj = nui.get("idFuncCode");
  22.                 var rtv = nui.decode(text);
  23.                 if(rtv.isValid == -1){
  24.                   funcObj.setIsValid(false);
  25.                   funcObj.setErrorText("功能编号重复");
  26.                   isFuncCodePass = false;
  27.                 } else {
  28.                         isFuncCodePass = true;
  29.                 }
  30.         },
  31.         error: function (jqXHR, textStatus, errorThrown) {
  32.             alert(jqXHR.responseText);
  33.             closeWindow();
  34.         }
  35.     });
  36.    
  37.    
  38. }
复制代码
这种方式能够将控件的错误信息提示出来,但是如果不作重复值的修改后,直接点击保存,调用以下代码:
  1. function saveData() {
  2.         var o = getData();
  3.         form.validate();
  4.         alert(form.isValid());
  5. }
复制代码
form.isValid() 的值竟然是 true。
请问这种情况应该如何进行自定义表单控件的校验??





欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2