判断信息是否发生变化决定是否需要保存

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<div class="main">
    <div class="baseInfo">
        <div class="form-item"  data-belong="baseInfo" data-type="input" id="text1">
            <div class="form-item-caption">text1:</div>
            <div class="form-item-control">
                <input type="text" value="text1"/>
            </div>
        </div>
        <div class="form-item"  data-belong="baseInfo" data-type="select" id="select1">
            <div class="form-item-caption">select1:</div>
            <div class="form-item-control">
                <select name="">
                    <option value="1">1</option>
                    <option value="2">2</option>
                    <option value="3">3</option>
                </select>
            </div>
        </div>
    </div>

    <div class="otherInfo">
        <div class="form-item" data-belong="otherInfo" data-type="input" id="text2">
            <div class="form-item-caption">text2:</div>
            <div class="form-item-control">
                <input type="text" value="text2"/>
            </div>
        </div>
        <div class="form-item" data-belong="otherInfo" data-type="input" id="text3">
            <div class="form-item-caption">text3:</div>
            <div class="form-item-control">
                <input type="text" value="text3"/>
            </div>
        </div>
        <div class="form-item"  data-belong="otherInfo" data-type="select" id="select2">
            <div class="form-item-caption">select2:</div>
            <div class="form-item-control">
                <select name="">
                    <option value="1">1</option>
                    <option value="2" selected>2</option>
                    <option value="3">3</option>
                </select>
            </div>
        </div>
    </div>
</div>
<button id="submitBtn">提交</button>
<script src="js/jquery.min.js"></script>
<script>
    var globalOldFormItemObjSet =  {
        baseInfo: [],
        otherInfo: []
    };
    $('#submitBtn').click(function(){
        if(!isFormChange(globalOldFormItemObjSet, getFormItemObjList())) {
            alert('没有发生变化');
        } else {
            alert('发生变化了');
        }
        globalOldFormItemObjSet = getFormItemObjList();
    })
    function getFormItemObjList() {
        var formItemObjSet = {
            baseInfo: [],
            otherInfo: []
        };
        var formItemObj = $('.main').find('.form-item');
        formItemObj.each(function(index, item) {
            var formItemObj = getFormItemObj(item);
            var Key = $(item).attr('data-belong');
            formItemObjSet[Key].push(formItemObj);
        });
        return formItemObjSet;
    }
    function getFormItemObj(formItem) {
        var item = $(formItem);
        var control = item.find('.form-item-control');
        var caption = item.find('.form-item-caption');
        var type = item.attr('data-type');
        var id = item.attr('id');
        var text= '';
        switch (type) {
            case 'input':
            {
                text = control.find('input').val().trim();
                break;
            }
            case 'select':
            {
                text = control.find('select').val();
                break;
            }
        }
        return {
            id: id,
            type: type,
            text: text
        };
    }
    function isEqualObj(a,b){
        var aProps = Object.getOwnPropertyNames(a);
        var bProps = Object.getOwnPropertyNames(b);
        if(aProps.length !== bProps.length){
            return false;
        }
        for(var i=0;i<aProps.length;i++){
            if(a[aProps[i]] != b[aProps[i]]) {
                return false;
            }
        }
        return true;
    }
    function isFormChange(oldFormItemObjSet,newFormItemObjSet) {
        var array = Object.keys(newFormItemObjSet);
//        console.log(array); // ["baseInfo", "otherInfo"]
        for(var i=0;i<array.length;i++) {
            var keyArray = array[i];
            var newKeyArray = newFormItemObjSet[keyArray];
            // console.log(newKeyArray); [{},{}]
            for(var j=0;j<newKeyArray.length;j++){
//                console.log(newKeyArray[j]);
               //  console.log(keyArray); // baseInfo
               //  console.log(oldFormItemObjSet[keyArray]) []
                if((oldFormItemObjSet[keyArray].length == 0 && array.length != 0) || (oldFormItemObjSet[keyArray].length != 0 && array.length == 0)) {
                    return true;
                } else {
                    var isSame = isEqualObj(newKeyArray[j], oldFormItemObjSet[keyArray][j]);
                    if (!isSame) {
                       return true;
                    }
                }
            }
        }
        return false;
    }
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我会尽力用中文来帮助您。 写一个策略判断,首先你需要确定这个策略判断的目的是什么。你可能想要使用 Vue 实现某些业务逻辑,或者根据用户的输入或某些条件来做出决策。 假设你想要根据用户的输入,使用 Vue 来决定是否显示一条消息。你可以这样做: 1. 在 Vue 的 data 属性中定义一个变量,用来存储用户的输入。 2. 在 Vue 的 methods 属性中定义一个方法,用来处理用户的输入。 3. 在你的 HTML 中使用 Vue 指令来渲染一条消息,并根据你在 data 中定义的变量的值来决定是否显示这条消息。 下面是一个简单的例子,它使用了 Vue 的 v-if 指令来决定是否显示一条消息: ``` <template> <div> <input v-model="inputValue"> <button v-on:click="checkInput">检查输入</button> <p v-if="showMessage">输入正确!</p> </div> </template> <script> export default { data() { return { inputValue: '', showMessage: false } }, methods: { checkInput() { if (this.inputValue === 'hello') { this.showMessage = true } else { this.showMessage = false } } } } </script> ``` 在这个例子中,我们定义了一个 data 属性,它包含了两个变量:`inputValue` 和 `show ### 回答2: 使用Vue写一个策略判断的过程可以分为以下几个步骤: 1. 创建Vue实例:首先,在Vue的主文件中创建一个Vue实例,通过new Vue()来实例化一个Vue对象。 2. 定义数据:在Vue实例中,通过data属性来定义需要使用的数据。例如,可以定义一个名为strategy的数据项,用来存储策略判断的结果。 3. 编写策略判断方法:在Vue实例中,可以使用methods属性来定义策略判断的方法。可以根据具体的策略要求,编写相应的判断逻辑。例如,可以编写一个名为checkStrategy的方法,来进行策略判断,并将结果保存在strategy数据项中。 4. 页面绑定与渲染:在Vue实例中,可以将数据页面元素进行绑定。通过v-bind指令可以将数据绑定到页面元素上,通过{{}}插值表达式可以将数据渲染到页面中。 5. 触发策略判断:可以通过按钮点击、输入框输入等方式来触发策略判断方法,根据具体的业务需求来确定触发方式。 6. 监听数据变化:在Vue实例中,可以通过watch属性来监听数据变化。例如,可以监听strategy数据项的变化,当数据发生改变时,执行相应的操作。 通过以上步骤,我们就可以使用Vue来实现一个策略判断的功能。这样,就能够根据具体的策略要求,灵活地进行判断,并将判断结果渲染到页面中,实现策略判断的功能。 ### 回答3: 使用Vue编写一个策略判断,可以采用以下步骤: 1. 首先,在Vue的模板中创建一个选择器,用于选择策略的条件。例如,可以使用一个下拉菜单或者复选框。 ``` <template> <div> <select v-model="selectedStrategy"> <option v-for="strategy in strategies" :key="strategy">{{ strategy }}</option> </select> <!-- 用于显示策略判断结果的部分 --> <div v-if="selectedStrategy === 'strategy1'">策略1的判断结果</div> <div v-if="selectedStrategy === 'strategy2'">策略2的判断结果</div> <div v-if="selectedStrategy === 'strategy3'">策略3的判断结果</div> <!-- 策略判断结果的代码可以根据具体需求进行更改 --> </div> </template> ``` 2. 在Vue的脚本部分,定义选项和策略判断的结果。 ``` <script> export default { data() { return { strategies: ['strategy1', 'strategy2', 'strategy3'], // 策略的选项 selectedStrategy: '' // 选中的策略 }; } }; </script> ``` 3. 策略判断的结果通过使用Vue的条件渲染来显示在页面上。根据选择的策略,使用`v-if`指令来判断并显示策略的判断结果。 以上就是使用Vue编写一个策略判断的简单流程,根据具体的策略和需求,你可以根据这个基础框架进行扩展和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值