- 注册时间
- 2014-8-26
- 最后登录
- 2023-4-24
- 阅读权限
- 10
- 积分
- 71
- 精华
- 0
- 帖子
- 11
|
本帖最后由 kisssk 于 2014-8-27 19:25 编辑
在mini ui 中,对某个控件指定了以下校验属性:required="true" vtype="maxLength:10" maxLengthErrorText="输入的编号长度不能超过10个英文字符." requiredErrorText="编号必须输入."
同时指定了自定义的 onvalidation 事件,
在onvalidation 的事件中对控件的值通过ajax到后台进行检查,然后在ajax的success 回调事件中使用以下方式设置控件的状态:
- function onFuncCodeValidation(e){
- var value = e.value;
- if(!e.isValid){
- return;
- }
- if(!isEnglish(value))
- {
- e.errorText = "编号请输入英文字符.";
- e.isValid = false;
- return;
- }
- var param = nui.encode({t:{"code":value}});
- $.ajax({
- url: "xxx.jsp",
- data: param,
- cache: false,
- type: "post",
- contentType: "text/json",
- async: true,
- success: function (text) {
- var funcObj = nui.get("idFuncCode");
- var rtv = nui.decode(text);
- if(rtv.isValid == -1){
- e.errorText = "编号重复.";
- e.isValid = false;
- }
- },
- error: function (jqXHR, textStatus, errorThrown) {
- alert(jqXHR.responseText);
- closeWindow();
- }
- });
-
-
- }
复制代码
但是表单中的控件却不能够回显对应的校验状态 。
通过另一种方式处理:
- function onFuncCodeValidation(e){
- var value = e.value;
- if(!e.isValid){
- return;
- }
- if(!isEnglish(value))
- {
- e.errorText = "编号请输入英文字符.";
- e.isValid = false;
- return;
- }
- var param = nui.encode({t:{"code":value}});
- $.ajax({
- url: "xxx.jsp",
- data: param,
- cache: false,
- type: "post",
- contentType: "text/json",
- async: true,
- success: function (text) {
- var funcObj = nui.get("idFuncCode");
- var rtv = nui.decode(text);
- if(rtv.isValid == -1){
- funcObj.setIsValid(false);
- funcObj.setErrorText("功能编号重复");
- isFuncCodePass = false;
- } else {
- isFuncCodePass = true;
- }
- },
- error: function (jqXHR, textStatus, errorThrown) {
- alert(jqXHR.responseText);
- closeWindow();
- }
- });
-
-
- }
复制代码 这种方式能够将控件的错误信息提示出来,但是如果不作重复值的修改后,直接点击保存,调用以下代码:
- function saveData() {
- var o = getData();
- form.validate();
- alert(form.isValid());
- }
复制代码 form.isValid() 的值竟然是 true。
请问这种情况应该如何进行自定义表单控件的校验??
|
|