您的位置:首页 > 产品设计 > UI/UE

EasyUI在表单提交时如何校验数据是否发生变化

2018-01-02 14:10 1551 查看
Easyui在form表单提交时应该先校验页面数据是否发生改变,之后在提交数据,我提供的方法可以校验Input输入框与combox下拉框的值是否发生变化,另本次使用的input全部是easyui-textbox,使用的下拉框全部为easyui-combobox; 
1.首先添加一个from表单,然后填充内容,要求填充内容时对应的控件需要name属性且与后台返回的json数据中参数一致

<form id="fm" method="post" novalidate style="margin: 0; padding: 20px 50px">

2.定义一个变量,用来存放后台的数据,然后与页面数据比较

var rowData;

3.在页面从后台获取数据后,给什么的变量赋值;

rowData = row;

4.写change函数

首先是input的监听函数,由于easyui框架使用easyui-textBox时会自动隐藏用户的input并生成新的input,所以在获取发生改变的input框的name属性时,需要使用$(this).next("input").attr("name");方法,在比较改变后的input的值与后台获取的值后,使用$("#fm").data("changed",true);方法赋值 
$(function() {
    $("#fm :input").change(function(e){
        var valueName = $(this).next("input").attr("name");
        var dataValue = rowData[valueName];
        var inputValue = e.currentTarget.value;
        if(dataValue == inputValue){
            $("#fm").data("changed",false);  
        }else {
            $("#fm").data("changed",true);  
        }
    });

}
然后是combox 的监听函数,由于监听函数是监听from表单里所有combox。所以需要找到触发函数的是哪一个对象,并获取对象name属性后,比较改变后的combox的值与后台获取的值,然后给change赋值
$("#fm .easyui-combobox").combobox({
        onChange : function(e){
            var valueName = $(this)[0].attributes.comboname.value;
            var selectValue = rowData[valueName];
             if(e == selectValue){
            $("#fm").data("changed",false);  
        }else {
            $("#fm").data("changed",true);  
        } 
        }
    })

5.提交的时候根据change去判断页面数据是否发生改变

 if($("#fm").data("changed")){
$.messager.alert('温馨提示', '发生数据参数变化');
}else{
$.messager.alert('温馨提示', '没有发生数据参数变化');
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息