必填的用户名 发表于 2019-6-16 09:54:10

如何使用js实现点击空白地方消失弹窗

我的要求是:点击按钮弹出表单,此时不能再点击任何按钮只能操作表单,但是可以点击空白地方让表单消失
目前进展:我用了两个div,一个div用于弹出表单,另一个div进行覆盖让鼠标不能点击其他地方
问题:不知道怎么实现点击表单之外的地方让这两个div消失从而可以再次点击其他功能按钮
jsp代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>My JSP 'MyJsp.jsp' starting page</title>
        <link rel="stylesheet" type="text/css" href="css/test.css">
       <script type="text/javascript" src="js/left_menu.js"></script>
</head>
<body>
<input type="button" onclick="borrowbook()" id="leftmenu1" value="借阅图书"><br>   
<input type="button" onclick="borrowbook()" id="leftmenu1" value="归还图书"><br>   
   <div id="borrowbook">
          <div style="width:500px;height:40px;">
                <hr>
                <form action="operbook.do" style="margin-left: 50px;" method="post" onsubmit="return operbookTest();">
                        <input type="hidden" name="oper" value="借阅">
                          请输入所借阅书籍的编号<input type="text" name="bid" id="operbid"><br>
                          请输入所借阅书籍的书名<input type="text" name="bname" id="operbname"><br>
                          请输入你想要借阅的本数<input type="text" name="bcount" id="operbcount"><br>
                          <input type="submit" value="确定">       
                          <input type="reset" value="重填">       
                </form>
          </div>
        </div>
        <div id="borrowbook_light">
        </div>
</body>
</html>
js代码:
function borrowbook() {
    var t1 = document.getElementById('borrowbook_light');
    var t2 = document.getElementById('borrowbook');
    t1.style.display = 'block';
    t2.style.display = 'block';
}
css代码:
@CHARSET "UTF-8";
#borrowbook_light{ /*整个弹窗的页面*/
    opacity: 0.8; /*透明度*/
    width: 100%; /*宽度*/
    height: 100%; /*高度,不能百分百*/
    background: #000; /*背景色*/
    position: absolute;
    top: 0;
    left: 0; /*定位*/
    display: none; /*隐藏*/
    z-index: 12; /*覆盖*/
}
#borrowbook{ /* 弹框的页面*/
        width: 500px; /*宽度*/
        height: 500px; /*高度*/
        background: #fff; /*背景色*/
        display: none; /*隐藏*/
        z-index: 13; /*覆盖*/
        position: absolute;
        top: 100px;
        left: 34%; /*定位*/
}

sukiwhip 发表于 2019-6-16 09:54:11

<!DOCTYPE html>
<html>

<head>
    <title>My JSP 'MyJsp.jsp' starting page</title>
    <!-- <link rel="stylesheet" type="text/css" href="css/test.css">
    <script type="text/javascript" src="js/left_menu.js"></script> -->
    <style>
      #borrowbook_light {
            /*整个弹窗的页面*/
            opacity: 0.8;
            /*透明度*/
            width: 100%;
            /*宽度*/
            height: 100%;
            /*高度,不能百分百*/
            background: #000;
            /*背景色*/
            position: absolute;
            top: 0;
            left: 0;
            /*定位*/
            display: none;
            /*隐藏*/
            z-index: 12;
            /*覆盖*/
      }
      
      #borrowbook {
            /* 弹框的页面*/
            width: 500px;
            /*宽度*/
            height: 500px;
            /*高度*/
            background: #fff;
            /*背景色*/
            display: none;
            /*隐藏*/
            z-index: 13;
            /*覆盖*/
            position: absolute;
            top: 100px;
            left: 34%;
            /*定位*/
      }
    </style>
</head>

<body>
    <input type="button" onclick="borrowbook()" id="leftmenu1" value="借阅图书"><br>
    <input type="button" onclick="borrowbook()" id="leftmenu1" value="归还图书"><br>
    <div id="borrowbook">
      <div style="width:500px;height:40px;">
            <hr>
            <form action="operbook.do" style="margin-left: 50px;" method="post" onsubmit="return operbookTest();">
                <input type="hidden" name="oper" value="借阅"> 请输入所借阅书籍的编号
                <input type="text" name="bid" id="operbid"><br> 请输入所借阅书籍的书名
                <input type="text" name="bname" id="operbname"><br> 请输入你想要借阅的本数
                <input type="text" name="bcount" id="operbcount"><br>
                <input type="submit" value="确定">
                <input type="reset" value="重填">
            </form>
      </div>
    </div>
    <div id="borrowbook_light" onclick="hiddenLight()">
    </div>
    <script>
      var t1 = document.getElementById('borrowbook_light');
      var t2 = document.getElementById('borrowbook');

      function borrowbook() {
            t1.style.display = 'block';
            t2.style.display = 'block';
      }

      function hiddenLight() {
            t1.style.display = 'none';
            t2.style.display = 'none';
      }
    </script>
</body>

</html>


是这个意思吗?

wongyusing 发表于 2019-6-18 22:46:43

你这里想实现类似bootstr4的modal组件的功能??
最简单方案就是套入bootstrap4

如果不套用,想自己写的话,可以尝试这样
把黑色部分设置一个方法。
当有点击事件的话,就把表单显示隐藏。
页: [1]
查看完整版本: 如何使用js实现点击空白地方消失弹窗