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 回调事件中使用以下方式设置控件的状态:
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。
请问这种情况应该如何进行自定义表单控件的校验??
欢迎光临 jQuery MiniUI (http://miniui.com/discuss/)
Powered by Discuz! X2