前端校验form表单是否发生改变

本文介绍了一种前端技术,用于检测表单数据是否被修改。通过深拷贝初始表单值并将其与用户输入进行对比,可以有效判断表单是否发生变化。文章提供了两种深拷贝方法及比较函数的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端校验form表单是否发生改变,如果没改变直接前端提示 

/**
 * 使用 json工具实现对象的深拷贝
 * @param obj 提供覆盖属性的对象
 */
var deepClone1 = function(obj){
    var _obj = JSON.stringify(obj);
    return JSON.parse(_obj);
}
/**
 * 使用递归实现对象深拷贝
 * @param obj
 * @returns {Array}
 */
var deepClone2 = function (obj){
    var objClone = Array.isArray(obj)?[]:{};
    if(obj && typeof obj==="object"){
        for(key in obj){
            if(obj.hasOwnProperty(key)){
                //判断ojb子元素是否为对象,如果是,递归复制
                if(obj[key]&&typeof obj[key] ==="object"){
                    objClone[key] = deepClone(obj[key]);
                }else{
                    //如果不是,简单复制
                    objClone[key] = obj[key];
                }
            }
        }
    }
    return objClone;
}
/**
 * 比较两个json对象 是否相等,前提是两个对象结构一样
 * @param x 字段较多的对象
 * @param y 字段较少对象
 * @returns {boolean} 一样 true
 *                    不一样 false
 */
var compareObject = function( x, y ) {
    //备份要比较的对象
    var temp = {};
    for(var key in x){
        temp[key] = x[key];
    }

    $.extend(x, y);//整合x对象
    //比较z和x
    for(var key in temp){
        var temp_value = temp[key];
        var x_value = x[key];
        if(temp_value != x_value){
            return false;
        }
    }
    return true;
};

页面实现

   var init_value;
    var obj = {};
    $(function () {
        init_value=deepClone1(${m});//后端传过来的值
    });
 var form = $("#testForm");

  var data= form.serializeArray()
        $.each(data,function(i,v){
            obj[v.name] = v.value;
        })
        //1、判断是否做了修改
        var flag = compareObject(init_value, obj);
        if (flag) {
            layer.msg("您并没有做任何修改");
            return false;
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值