jquery重写confirm.

技术·学习 · 2017-03-14 · 508 人浏览
 忙忙碌碌中度日,许久不更新了,工作是一方面,偷懒是一方面。今天碰到一个问题,因为项目需要,要重新修改公共样式,所以,我需要负责的是微信端弹出样式的修改。对于浏览器来说confirm是在确认后去触发的,所以在对其修改的时候也要考虑到后续行为,通常在这里做处理的时候是比较难做的,因为confirm在弹出后会对js进行暂停操作,点击确认之后才会去触发后面的操作。

通常,我们的用法是这样的,if(confirm('确认要操作吗?')){...这里就是确认之后要做的事}
因为confirm显示的比较难看,所以就重新写了模拟框出来,首先是html部分。

<!-- 弹出层,置灰 -->
<div id="mask"></div>
<!-- 确认信息弹出层 -->
<div id="confirmDiv" class="box01">
    <div class="font01" id="confirmMsg"></div>
    <div class="butbox">
        <a href="javascript:;">
            <div class="but02 ok" id="btnok">确定</div>
        </a>
        <a href="javascript:;">
            <div class="but03 cancel">取消</div>
        </a>
    </div>
</div>

css样式部分

#mask {
    display: none;
    position: fixed;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    background-color: #555;
    opacity: 0.2;
    z-index: 9999998;
}
.box01 {
    display: none;
    width: 70%;
    height: 160px;
    position: fixed;
    left: 15%;
    top: 50%;
    margin-top: -80px;
    background-color: #FFF;
    border-radius: 10px;
    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
    box-shadow: 0 0 20px #999;
    -moz-box-shadow: 0 0 20px #999;
    -webkit-box-shadow: 0 0 20px #999;
    z-index: 9999999;
}
.font01 {
    margin: 16px 4%;
    font-size: 14px;
    color: #808080;
    line-height: 26px;
    letter-spacing: 1px;
    font-family: "微软雅黑";
    text-align: center;
}
.butbox {
    width: 92%;
    margin-left: 4%;
    margin-right: 4%;
    border-top: 1px #e5e5e5 solid;
    padding-top: 16px;
}
.but01 {
    width: 90%;
    height: 40px;
    margin-left: 5%;
    margin-right: 5%;
    border-radius: 5px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    background-color: #0ab;
    color: #FFF;
    font-size: 16px;
    line-height: 40px;
    text-align: center;
    cursor: pointer;
    float: left;
    font-family: "微软雅黑";
}
.but01:hover {
    background-color: #0096aa;
}
.but02 {
    width: 40%;
    height: 40px;
    margin-left: 5%;
    margin-right: 5%;
    border-radius: 5px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    background-color: #0ab;
    color: #FFF;
    font-size: 16px;
    line-height: 40px;
    text-align: center;
    cursor: pointer;
    float: left;
}
.but02:hover {
    background-color: #0096aa;
}
.but03 {
    width: 40%;
    height: 40px;
    margin-left: 5%;
    margin-right: 5%;
    border-radius: 5px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    border: 1px solid #0ab;
    color: #666;
    font-size: 16px;
    line-height: 40px;
    text-align: center;
    cursor: pointer;
    float: left;
}
.but03:hover {
    border: 1px solid #85dadf;
}

js部分

// 显示确认信息提示框
$(function(){
    window.showConfirm = showConfirm;
    //关键代码
    function showConfirm(msg){
      var cancel_callback = function(){};
      var ok_callback = function(){};
      var result = {
          cancel:function(callback){cancel_callback=callback;return result;},
          ok:function(callback){ok_callback=callback;return result;}
      }
      $("#confirmDiv").find('#confirmMsg').text(msg);
      $("#confirmDiv").find('.cancel').off().on("click", function(){
          $("#confirmDiv").css("display","none");
          cancel_callback();
      });
      $("#confirmDiv").find('.ok').off().on("click", function(){
          $("#confirmDiv").css("display","none");
          ok_callback();
      });
      setTimeout(function(){
          $("#confirmDiv").css("display","block");
          $("#mask").css("display","block");
      },0);
      return result;
    }
    
});

// 关闭确认提示框
function closeConfirmDiv(){
    $("#confirmDiv").css("display","none");
    $("#mask").css("display","none");
}

js调用部分

showConfirm('确认吗').ok(function(){
            alert('确认');
        }).cancel(function(){
            alert('取消');
    });
js confirm
Theme Jasmine by Kent Liao