• 使用自定义的确认框代替默认的浏览器的确认框


    经常在项目使用到浏览器默认的确认框,可惜默认的确认框无法自定义样式,但是通过使用if(confirm("确定吗"))来获取返回值并进行下一步的操作有时十分必要。那么,如何自定义一个类似的能返回布尔值的函数呢?

    一开始的想法是写个弹出框函数,能通过捕捉相应的点击确认和取消事件来返回true or false。however,事实是函数的执行就会一个返回true值,所以无论点击了弹出框什么按钮都返回true,无法模拟默认的浏览器确认框。

    尝试使用回调函数的方法,实测可行。

    关键代码如下:

    <script>
    
      /**
       * @param content : 确认框中的内容
       * @param callback_CANCEL : 点击取消的回调函数
       * @param callback_OK : 点击确认的回调函数
       */
      function showConfirm(content,callback_CANCEL,callback_OK){
        var confirm_modal = document.createElement('article');
        confirm_modal.setAttribute('id', 'alert-confirm');
        confirm_modal.innerHTML='<header>自定义确认框</header><div class="confirm-content">'
              + content + '</div><footer><button id="confirm-cancel" >取消</button><button id="confirm-yes">确定</button></footer>';
        document.body.appendChild(confirm_modal);
    
        //点击取消
        document.getElementById("confirm-cancel").onclick=function(){
          document.getElementById('alert-confirm').remove();
          if(callback_CANCEL && typeof callback_CANCEL== "function")
                 callback_CANCEL( false );
           };
    
        //点击确认
           document.getElementById('confirm-yes').onclick=function(){
              document.getElementById('alert-confirm').remove();
              if(callback_OK && typeof callback_OK == "function")
                  callback_OK( true );
           };
      }
    
      //点击弹出确认框
       document.getElementById("confirm").onclick=function(){showConfirm("这是个确认框!",function(){alert("你点击了取消")},function(){alert('你点击了确认')})};
    
    </script>

    简单写了下样式:

    <style type="text/css">
          #alert-confirm{
            box-shadow: 2px 2px 5px #333;
            border:1px solid #999;
            border-radius:4px;
            position: absolute;
            top:50%;
            left:50%;
            margin-left:-200px;
            margin-top:-125px;
            width:400px;
            height:250px;
            background: #FFF;
          }
          header{
            box-sizing:border-box;
            height:40px;
            width:100%;
            line-height: 40px;
            padding:0 10px;
            font-size:16px;
            font-weight:bolder;
            display: block;
            border-bottom: 1px solid #666;
          }
          .confirm-content{
            line-height: 170px;
            text-align: center;
            height:170px;
          }
          footer{
            box-sizing:border-box;
            height:40px;
            width:100%;
            line-height: 40px;
            font-size:16px;
            font-weight:bolder;
            display: block;
            border-top: 1px solid #666;
            text-align: center;
          }
     </style>

    弹出框效果如下图,样式较简单粗犷,不用太吐槽:

    点击确认后会执行回调函数alert('你点击了确认'), 点击取消后会执行回调函数alert('你点击了取消'),就不截图了。

    同样的,要想实现alert弹出框也是类似的思路,回调callback_OK();则可。

    总之,成功实现自定义确认框,若有更好的方法,请诸位不吝赐教。

              -----------------------原创,转载请把本文链接附上 http://www.cnblogs.com/suspiderweb/

  • 相关阅读:
    InitializingBean
    线程池
    maven
    mysql主从库
    zookeeper
    分布式服务框架 Zookeeper -- 管理分布式环境中的数据
    远程调试
    enum
    注解
    Shell错误[: missing `]'
  • 原文地址:https://www.cnblogs.com/suspiderweb/p/4756192.html
Copyright © 2020-2023  润新知