zoukankan      html  css  js  c++  java
  • Bootstrap开启模态框后对数据处理(标记模态框的开启与关闭状态)

    JS用全局变量标记状态,方法中动态修改全局变量以标记状态是一个重要思想。

      需求:组合条件查询数据,查询完之后填充到模态框中,开启模态框,模态框中有组合条件查询,此时查询只需要更新模态框表格数据不需要开启模态框,也就是让模态框开启方法执行一次。

    (点查询的时候只更新数据不会再次开启模态框)

      思想:JS设置一全局变量,在手动开启模态框之后修改全局变量的值,此时调用查询方法不会执行开启模态框方法;在手动关闭的时候将全局变量置为初值,可以在查询的时候再次开启模态框。

    模态框的一些重要事件:

    下表列出了模态框中要用到事件。这些事件可在函数中当钩子使用。

    show.bs.modal 在调用 show 方法后触发。
    $('#identifier').on('show.bs.modal', function () {
      // 执行一些动作...
    })
    shown.bs.modal 当模态框对用户可见时触发(将等待 CSS 过渡效果完成)。
    $('#identifier').on('shown.bs.modal', function () {
      // 执行一些动作...
    })
    hide.bs.modal 当调用 hide 实例方法时触发。
    $('#identifier').on('hide.bs.modal', function () {
      // 执行一些动作...
    })
    hidden.bs.modal 当模态框完全对用户隐藏时触发。
    $('#identifier').on('hidden.bs.modal', function () {
      // 执行一些动作...
    })

    解决方法:

    1.定义全局变量

    var inner_open = false, out_open = false;// 用于记录两个模态框是否打开

    2.模态框关闭事件:(全局变量置为初值)

    复制代码
    $(function() {
        // 内部模态框关闭的时候将标志字段设为false
        $('#innerEmployeeModal').on('hidden.bs.modal', function() {
            inner_open = false;
        });
        // 外部模态框关闭的时候将标志字段设为false
        $('#outEmployeeModal').on('hidden.bs.modal', function() {
            out_open = false;
        });
    })
    复制代码

    3.查询数据与开启模态框:开启模态框后修改全局变量值

    复制代码
    /** *S 查询内部部门员工 */
    var queryInnerEmployee = function() {
        var departments = $("#el_chooseDepart1").text();// 获取部门名字
        // 如果没有选择部门提醒选择部门,否则查询
        if (departments.length > 0) {
            departments = departments.substring(0, departments.length - 1);
            $("input[name='queryInnerEmployeesCondition.departments']").val(
                    departments);
            ajaxQueryEmployeeIn(departments);
        } else {
            alert("至少选择一个部门");
            return;
        }
    }
    
    var ajaxQueryEmployeeIn = function(departments) {
        $.ajax({
            url : contextPath + '/exam_getEmployeeIns4Exam.action',
            data : $("#queryInnerForm").serialize(),
            type : 'POST',
            dataType : 'json',
            success : showEmployeeInModal,
            error : function() {
                alert("查询内部员工出错!!!")
            }
        });
    }
    function showEmployeeInModal(response) {
        // alert(JSON.stringify(response));// 转换为JSON串输出
        $("#innerEmployeeTable").html("");
        var examEmployeeIns = response.examEmployeeIns;
        for (var i = 0, length = examEmployeeIns.length; i < length; i++) {
            var sex = examEmployeeIns[i].sex == '1' ? "男" : "女";
            var trainInt = examEmployeeIns[i].trainStatus;
            var tarinStr;
            if (trainInt == 0) {
                tarinStr = "一级也未考";
            }
            if (trainInt == 1) {
                tarinStr = "通过一级考试";
            }
            if (trainInt == 2) {
                tarinStr = "通过二级考试";
            }
            if (trainInt == 3) {
                tarinStr = "通过三级考试";
            }
            var tr_inner = '<tr><td>'
                    + '<input type="checkbox" name="employeeIn" value="'
                    + examEmployeeIns[i].idCode + '" class="el_checks" /></td><td>'
                    + examEmployeeIns[i].name + '</td><td>' + sex + '</td><td>'
                    + examEmployeeIns[i].idCode + '</td>' + '<td>'
                    + examEmployeeIns[i].departmentName + '</td><td>' + tarinStr
                    + '</td></tr>';
            $("#innerEmployeeTable").append(tr_inner);
        }
        // alert(JSON.stringify(data));//转换为JSON串输出
        // 如果模态框未打开就打开模态框并设置标志字段为已打开
        if (!inner_open) {
            $("#innerEmployeeModal").modal({
                backdrop : 'static',
                keyboard : false
            });
            inner_open = true;
        }
    
    }
    复制代码
  • 相关阅读:
    正则表达式
    http协议组成(请求状态码)
    谈一谈你对js线程的理解
    CSS 中定位方式有几种,说明他们的意义
    手机端白屏前端优化的方法,5 种以上
    用 js 写一个获取随机颜色的程序
    如何获取本地存储信息
    cuda 版本查阅
    ubuntu16.04 ROS安转及RVIZ启动
    Tensorflow和Caffe 简介
  • 原文地址:https://www.cnblogs.com/yachao1120/p/10000386.html
Copyright © 2011-2022 走看看