js回调函数,检测这个值是否重复

//校验提交的数据是否重复
/**
 * url:后端的查询地址
 * filedVal: 要传到后台的值
 * ele:要绑定显示的元素,一般就是当前的input就可以,直接在其后边追加显示
 * fn:回调函数,把查询到的值,回调给使用者
*
* json 后台传过来的数据{data:""} *
*/ checkFiled: function (url, filedVal, ele, msg, fn) { if (!msg) { msg = "此项数据重复"; } $.getJSON(url, {filed: filedVal}, function (json) { if (json.data != null && json.data != 'null') { $(ele).next().remove("span"); $(ele).parent().append('<span>' + msg + '</span>'); } else { $(ele).next().remove("span"); } //写了函数 if (fn) { //就执行这个函数 fn(json.data); } }); }

//使用方式
var $input = $("input[name='customer.creditCode']"); $input.on('input', function (e) { App.checkFiled("/YunApps/com_momathink_crm_zkhq/customer/checkCreditCode", $input.val(), $input, "社会信用代码重复", function (data) { console.log("回调函数,拿到后台传过来的数据 " + data); }); });

 这个可以升级一下

App = {
    data:{},//编辑时候保存传过来的值,保存时候如果写的和传过来的值一样,那么就不是重复的,如果是添加那么这个值就是空,
  
//
校验提交的数据是否重复 checkFiled: function (url,data,ele,msg,fn) { if(!msg){ msg = "此项数据重复"; } $.getJSON(url,data,function(json){ if(json.data != null && json.data != 'null'){ $(ele).next().remove("span"); $(ele).parent().append('<span style="color:#ff0000;">' + msg + '</span>'); }else{ $(ele).next().remove("span"); } //写了函数 if(fn){ fn(json.data); } }); }, /** * 检测客户的这个数据是否重复 * @param appVal app保留下的值,这个值在编辑的时候是作为全局变量存下的 * @param ele 绑定事件的元素,一般是input框 * @param filed 查询的数据库字段 * @param msg 提示的消息 */ checkCustomerFiled:function(appVal,ele,filed,msg){ var $input = $(ele); $input.on('input',function(e){ //编辑和原来的值一样不检测 if(appVal == $input.val()){ return ; } App.checkFiled("/YunApps/com_momathink_crm_zkhq/customer/checkField",{'filed':filed,'val':$input.val()},$input,msg); }); }, //监测重复值,使用方法 checkFieldMethod:function(){ console.log("开始添加检测重复")
var $input = $("input[name='customer.creditCode']");//要检测的input元素

        /*
        * App.data.id 编辑时候保存全局的id ,放置我写了一个不想要的值之后,不想改了,回到原来的值后保重复的问题,如果是添加这个值就是空,那就没问题了
        * $input 要校验的元素,这个元素的值就是下边这个字段传到后台的值
        * creditCode 传到后台的要校验的数据库中的这个字段的名字
        * 最后的文字 就是我们重复后提示的文字
        */ App.checkCustomerFiled(App.data.id,$input,
'creditCode','社会信用代码重复')
var $inputcompanyName = $("input[name='customer.companyName']"); App.checkCustomerFiled(App.data.companyName,$inputcompanyName,'companyName','公司名称重复') },
}
 

后台方法,改进后的

 /**
     * 根据字段和值查询数据
     * @param filed 数据库表字段
     * @param val 字段对的值
     * @return
     */
    public static Integer getIdByFiledAndVal(String filed,String val){
        if(null == filed || null == val){
            return null;
        }
        CrmCustomer crmCustomers = dao.findFirst("SELECT id FROM crm_customer WHERE " + filed + "=? limit 1", val);
        if(null == crmCustomers){
            return null;
        }
        return crmCustomers.getId();
    }

传到前台的是一个json
{data,""}

 如果再次改动,可以把数据库的名字加上,这样就可以对不同的表进行查询了

原文地址:https://www.cnblogs.com/renjianjun/p/9923968.html