easyui 自定义远程校验 设置rules回调模板 真正的自定义校验

以前做唯一性验证,在得到远程校验结果之后,手动弹出提示框提示重复与否。

而且,而且,不能把校验策略写死在JSP里面:validType=remote['url'],如果这样写,修改的时候又不能避免 oldvalue 的校验,结果就是 aa 改成 ab,又改回来aa,告诉你该项已重复!实际什么都没改偷笑

正题:

1 定义模板校验规则(这个可以放进自己的core.js,不用每个页面都写一次):

$.extend($.fn.validatebox.defaults.rules, {

/**
* 调用自定义的方法校验模板
* 使用方式: validType=call[fn]
* @type 
*/
call: {
        validator: function(value, param){
// value是被校验的控件的值
        // 取出页面传入用来校验的方法
            var callback = param[0];
            if(callback){
// 回调
            return callback(value);
            }
            return false;
        },
        // 显示校验错误信息
        message: '{1}' 
    }
});


2 自定义校验方法

  以下是我的编码唯一性校验:

/**
   *  编码唯一性校验
   *
 *  返回true表示校验通过,返回false表示校验失败
 */
function codeValidate(code){ 
    var result = true;
    // 这里做业务逻辑判断, 比如判断是否需要验证等等,我的这里是oldvalue不需要校验
    // 以下是我的远程唯一校验,ajax一定要同步执行
    $.ajax({
        async: false,
            url : 'myurl',
            data : {
                code : code
            },
            success : function(res) {
            result = res;
        }
    });
    // 这里的result只有2个值:true / false
    return result;
}

3 页面设置调用

我的input文本框设置: 

<input class="easyui-textbox" name="code" data-options="required:true" validType="call[codeValidate]" invalidMessage="编码重复,请重新输入" ></input>

4 提交之前,把这个input所在的form校验一下就行了,这样对于比较复杂的校验,只需要写一个校验的方法,然后在页面配置validType即可,是不是很省心呢


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值