zoukankan      html  css  js  c++  java
  • 基于jquery的提交、编辑页面js编写框架

    无验证设计

    基于jquery的提交、编辑页面js编写框架,设计思路,将js按照如下进行划分

    1.页面数据初始化以及控件显示控制

    2.填写状态控件绘出(不从ajax取数据,单一的绘制行为)

    3.编辑状态控件绘出(不从ajax取数据,单一的绘制行为)

    4.控件操作事件绑定(获取焦点、失去焦点、点击)

    5.控件数据事件绑定(长度校验、业务规则校验、格式校验、不为空或有效值校验)

    6.用户提交数据

    7.页面数据储存model(新值、旧值、提交数值),依据特定的css样式名寻找所需数据

    /// <reference path="jquery.js" />
    $(function () {
        pageGlobal.data = {};
        pageGlobal.page = new pageGlobal.pt("submitdata", pageGlobal.data);
    });
    pageGlobal.pt = function (pro, data) {
        this.pro = pro || "submitdata";
        this.data = data || {};
        this.model = new Object;
        this.data.controls = new Array;//控件id数组
        this.controlEvent = new Object;//控件事件容器对象
        this.commonEvent = new Object;//公用事件
        this.dataEvent = new Object;//数据事件
        this.init = function () {
            this.initFn();
            this.common();
        }
        this.init.apply(this, arguments);
    };
    //页面数据初始化以及控件显示控制
    pageGlobal.pt.prototype.initFn = function () {
        var that = this;
        var common = that.commonEvent;
        that.model=common.extractModel();
        //-------------------控件绘制-------------------------------//
        var ctlArr = that.data.controls;
        //-------------------控件基础事件-------------------------------//事件命名规则:id+事件类型名
        var ctleventObj = that.controlEvent;
        //ctleventObj["idclick"]=function(){
        //逻辑处理
        //};
        common.controlBindEvent(ctlArr, ctleventObj);
        //-------------------数据事件-------------------------------//事件类型:(长度校验LengthCheck、业务规则校验RulesValidation、格式校验FormatCheck、必填校验Required),命名规则:id+事件类型名
        var dataEventObj = that.dataEvent;
        //dataEventObj["idlc"]=function(){
        //逻辑处理
        //return true;如果通过验证否则返回false
        //};
        common.dataBindEvent(dataEventObj, that.model);
        //-----------------数据提交逻辑函数---------------------------------//
    };
    pageGlobal.pt.prototype.common = function () {
        var that = this;
        //抽取数据对象
        that.commonEvent.extractModel = function (className) {
            var model = new Object;
            model.json = new Object;//准备作为json对象提交的数据
            model.arr = new Array;//id存储数组
            var inputs = $(className);
            if (inputs) {
                for (var i = 0; i < iwwnputs.length; i++) {
                    var val = $("#" + inputs[i].id).val();
                    model["o" + inputs[i].id] = val; //设置为旧变量
                    model["n" + inputs[i].id] = val; //设置为新变量
                    model.json[inputs[i].id] = val;
                    model.json[inputs[i].id].ev = new Array;
                    model.json[inputs[i].id].evAction = function () {
                        for (var i = 0; i < this.ev.length; i++) {
                            if (!this.ev[i]())
                                return false;
                        };
                        return true;
                    };
                    model.arr.push(inputs[i].id);
                };
            };
            return model;
        };
        //更新数据对象
        that.commonEvent.updateModel = function (model, className) {
            var inputs = $(className);
            if (inputs) {
                for (var i = 0; i < inputs.length; i++) {
                    model["n" + inputs[i].id] = $("#" + inputs[i].id).val(); //设置为新变量
                    model.json[inputs[i].id] = $("#" + inputs[i].id).val();
                };
            };
            return model;
        };
        //控件事件绑定
        that.commonEvent.controlBindEvent = function (ctlArr, ctleventObj) {
            var eventTypeArr = ["click", "blur", "focus", "mousemove"];
            for (var i = 0; i < ctlArr.length; i++) {
                for (var j = 0; j < eventTypeArr.length; j++) {
                    var eventName =ctlArr[i]+ eventTypeArr[j];
                    if (ctleventObj[eventName]) {
                        $("#" + ctlArr[i]).live(eventTypeArr[j], ctleventObj[eventName]);
                    };
                };
            };
        };
        //数据事件绑定
        that.commonEvent.dataBindEvent = function (dataEventObj, model) {
            var eventTypeArr = ["lc", "rv", "fc", "r"];
            var ctlArr = model.arr;
            for (var i = 0; i < ctlArr.length; i++) {
                for (var j = 0; j < eventTypeArr.length; j++) {
                    var eventName =  ctlArr[i]+eventTypeArr[j];
                    if (dataEventObj[eventName])
                        model.json[ctlArr[i]].ev.push(dataEventObj[eventName]);
                };
            };
        };
    };

  • 相关阅读:
    华为防火墙server-map、ALG
    华为防火墙来回路径不一致、智能选路随笔
    锐捷交换机修改openssl秘钥加密算法
    华为交换机板卡类型
    H3C交换机堆叠口、MAD检测口
    内网用户使用公网IP访问内部服务
    记一次SSL证书排错
    解析teambition文件为分享链接
    tomcat启动乱码如何解决?
    BOM与DOM的区别与联系
  • 原文地址:https://www.cnblogs.com/AI001/p/3996860.html
Copyright © 2011-2022 走看看