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;
    }

}

原文地址:https://www.cnblogs.com/yachao1120/p/10000386.html

时间: 2024-11-12 09:10:07

Bootstrap开启模态框后对数据处理(标记模态框的开启与关闭状态)的相关文章

BootStrap学习笔记JS插件(一)--模态弹出框

一.弹出框基础 <div class="modal show"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss=&quo

WPF中PreviewMouseDownEvent的系统处理:TabItem的PreviewMouseDown 事件弹框后不切换的问题调查

?? 背景: UI中有一个TabControl, 包含2个TabItem,当切换到别的TabItem时可能弹框然后根据逻辑判断是否跳转过去. 然后我就做了这样一个demo: xaml: <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml" xmln

.net 弹出消息框后,页面样式变乱

点击按钮,执行提交操作,弹出消息框后,页面的样式变乱,解决方法: 首先,确定使用的css样式正确,页面中的宽高值保持规范统一: 然后,弹出框避免使用Response.Write(),如下所示 Response.Write("<script language=javascript>"); Response.Write("window.alert('"); Response.Write("计划添加失败!"); Response.Write

EC2.0开启多规格后,编辑无法获取规格数据

我们其实一共碰到2个问题, 1. 一个是弹出了货品编辑画面,但是货品的明细没有2.有货品明细但是货品明细各个字段都是空的, 上面2种情况数据库都是有值的. 第一个问题解决方案: 修改html中的JS app/b2c/view/admin/goods/detail/spec/set_spec.html 这个文件 修改 var activeProducts = <{$activeProducts}>; 为 : var activeProducts = New String(<{$active

jquery选中将select下拉框中一项后赋值给text文本框

jquery选中将select下拉框中一项后赋值给text文本框,出现无法将第一个下拉框的value赋值给文本框 因为select默认选中第一项..在选择第一项时,便导致无法激发onchange事件.所以无法进行赋值给文本框 解决方法. select下拉框设置第一项做一个无用的占位option <script type="text/javascript">     function changeSelect(obj) {         var _this = obj;  

win10锁屏或睡眠一段时间后弹不出登录框

win10锁屏或睡眠一段时间后弹不出登录框 文:铁乐与猫 通常发生在win10更新到10周年版后发生,也就是会卡在登录状态,但不见输入登录框. 我出现这种情况的时候不是很严重,一般等久些也能出现,但问题是这很闹心. 如果碰巧遇上重要或紧急事务要处理那更是遭心. 人无远虑,必有近忧. 总不能等到某天发生紧急事故,老板都站在你身后看你操作的时候而你在这个时候被win10的这个bug给挡在系统之外, 什么操作都不行,会给人一种什么感觉,那就是你到底行不行? 所以这个bug是一个很严重的炸弹,必需马上排

C# GDI绘制矩形框,鼠标左键拖动可移动矩形框,滚轮放大缩小矩形框

最近工作需要,要做一个矩形框,并且 用鼠标左键拖动矩形框移动其位置.网上查了一些感觉他们做的挺复杂的.我自己研究一天,做了一个比较简单的,发表出来供大家参考一下.如觉得简单,可路过,谢谢.哈哈. 先大概介绍一下原因,GDI画矩形框就不说了,很简单的.这里面最主要的就是滚轮放大和左键移动两个事件,要计算矩形框的坐标位置.下面将代码贴出如下: 先是定义需要的变量,就四个变量. //矩形框坐标        private Rectangle DrawRect = new Rectangle(0, 0

ASP.NET实现弹出框真分页将复选框选择的数据存到数据库中(一)

ASP.NET实现弹出框真分页将复选框选择的数据存到数据库中,这个问题分一下几步走 1.将弹出框真分页后复选框选择的数据保存. 2.将弹出框保存的数据传到父页面上. 3.将数据在父页面上显示. 4.点击保存将信息存入数据库中. 首先来第一步将弹出框真分页后复选框选择的数据保存. 思路很简单就是先真分页,然后在点击下一页的时候扫描这一页所有点击复选框的数据保存到一个变量数组中.下面就是主要代码: ASP代码: <%@ Page Language="C#" AutoEventWire

CSS框模型:一切皆为框 — 从行框说起

一 行框 看图说话 css 行框 各部分详解 上图代表了框模型中的行框.line-height 属性设置行间的距离(行高).该属性会影响行框的布局.在应用到一个块级元素时,它定义了该元素中基线之间的最小距离而不是最大距离. line-height 与 font-size 的计算值之差(在 CSS 中成为“行间距”)分为两半,分别加到一个文本行内容的顶部和底部.可以包含这些内容的最小框就是行框.[来源] 二 框模型 继续看图 上图代表了CSS中的框,每个框(也就是所有元素都是框,一定要记住这点,下