Jquery判斷form表單數(shù)據(jù)是否變化

字號:


    本文實(shí)例為大家分享了Jquery判斷form表單數(shù)據(jù)是否變化的三大步驟,供大家參考,具體內(nèi)容如下
    1、思路為:修改時點(diǎn)擊一行datagrid,并進(jìn)行頁面跳轉(zhuǎn)數(shù)據(jù)綁定,在提交form時,序列號form表單,并重新獲取datagrid選中的行數(shù)據(jù),進(jìn)行數(shù)據(jù)比較。</span>  
    /** 
     * 判斷form內(nèi)屬性值是否被修改 
     * 
     * @param jsonForm 對應(yīng)修改的form序列化后的json數(shù)據(jù) 
     * @param row 對應(yīng)datagrid選中的數(shù)據(jù)源 
     * 
     * @Return true 存在修改項(xiàng) 
     *     false 不存在修改項(xiàng) 
     */
    isModified:function(jsonForm,row){ 
      for(key in jsonForm){ 
        //form中存在,但數(shù)據(jù)源datagrid中不存在 
        if(row[key] == undefined){ 
          continue; 
        } 
        //form中""或null,但數(shù)據(jù)源datagrid中為null或""時,不進(jìn)行比較 
        if(!((jsonForm[key] == null || jsonForm[key] == '') && (row[key] == null || row[key] == ''))){ 
          //如果值不同,則返回true 
          if(jsonForm[key] != row[key]) 
            return true; 
        } 
      } 
      return false; 
    }
    2、獲取變化的值前后變化信息,由于項(xiàng)目需要記錄值變更記錄,并保存column中英文信息,如下:
    /** 
       * 獲取form被修改信息 
       * 
       * @param jsonForm 對應(yīng)修改的form序列化后的json數(shù)據(jù) 
       * @param row 對應(yīng)datagrid選中的數(shù)據(jù)源 
       * @param columnJSModel 為表單form中name屬性中英對照js,需在update.jsp中引用此js文件 
       * 
       * @Return json 數(shù)據(jù)如:[{"updateColumn":"loanRatio","updateColName":"額比例","updateContent":"由11變更為100.00"}, 
       *     {"updateColumn":"loanQuotaTypeName","updateColName":"比例形式","updateContent":"由 卡 變更為 實(shí)物"}] 
       * 
       */
      getModifiedField:function(jsonForm,row,columnJSModel){ 
        var modifiedArry = []; 
        var jsonArrStr = ''; 
        for(key in jsonForm){ 
          //form中存在,但數(shù)據(jù)源datagrid中不存在 
          if(row[key] == undefined){ 
            continue; 
          } 
          //form中""或null,但數(shù)據(jù)源datagrid中為null或""時,不進(jìn)行比較 
          if(!((jsonForm[key] == null || jsonForm[key] == '') && (row[key] == null || row[key] == ''))){ 
            //如果值不同,則返回true 
            if(jsonForm[key] != row[key]){ 
              var jsonObj = {}; 
              jsonObj.updateColumn = key; 
              jsonObj.updateColName = columnJSModel[key]; 
              jsonObj.updateContent = '由'+ row[key] + '變更為' + jsonForm[key]; 
              modifiedArry[modifiedArry.length] = jsonObj; 
            } 
          } 
        } 
        jsonArrStr = JSON.stringify(modifiedArry); 
        //console.log(jsonArrStr); 
        return jsonArrStr; 
      }
    3、其中的columnJSModel為中英對照J(rèn)S實(shí)體,ratio、qutaTypeName分別對應(yīng)form中的name屬性名,如下:
    var policyColumn = { 
        ratio : '比例', 
        quotaTypeName : '比例形式'
    };
    以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。