Validform自定义规则
背景
本页面是一个部署服务页面
上一个页面是服务列表页面
我们希望能够在在部署服务的时候,检查一下服务名是否重复
于是就需要自定义规则
代码
html部分为:
<form class="form-horizontal" id="saveForm" style="margin-top: 15px;" onsubmit="return false;">
<div class="col-sm-9">
<input type="text" class="form-control ue-form Validform_input" id="name" placeholder="请输入服务名称"
datatype="keepSingle" nullmsg="服务名称不能为空"/>
<span class="Validform_checktip Validform_span"></span>
</div>
</form>
表单id为saveForm,自定义方法名为keepSingle,uvalidform是公司封的方法,使用validform也可以正常用。
js部分为
$("#saveForm").uValidform({
datatype:{
"keepSingle":function(gets,obj,curform){
var tf = global.names.indexOf(gets);
if (global.names.indexOf(gets) > -1){
return "模型重名";
}else if (gets.length > 20){
return '名称需小于20字符';
}
}
},
btnSubmit:"#deployBtn",
callback:function(form){
$.dialog({
type: 'confirm',
content: '您确定要提交表单吗?',
ok: function () {save();},
cancel: function () {}
});
}
});
这个names是我的名字列表,就是要看这列表里重不重
探索过程
我需要校验长度和重复嘛,需要两个方法。本来我照着网上的教程,在validform方法体里写tiptype:2,然后input里写
datatype="keepSingle,s1-20"
结果这两个方法全部失灵。
就这个-> 虽然这个链接里的方法跑起来也没有预想的结果,但是可以借鉴
后来我觉得可以写一个自定义方法,然后方法体里一起处理长度和重复的问题,然后return不一样的信息。
最后试成功了。
有两个tip
第一个是跟在input后面的span不可以删除,在内部处理的时候,会判断有没有这个类Validform_checktip。具体我也没看懂,但是删了就显示不出来提示了。
然后自定义方法体里return出的字符串,在validform方法里是使用的.text()方法,所以不能插入html标签,这是让我比较失落的地方,要是能.html(),就可以插小图标之类的东西了。