1、先引入 confirm.css

@charset "UTF-8";

lq-alert {
width: 100%;
height: 100%;
background: rgba(0, 0, 0, .35);
position: fixed;
top:;
left:;
display: flex;
display: -webkit-flex;
justify-content: center;
align-items: center;
z-index:;
} alert-wrap {
width: 300px;
background: #fff;
border-radius: 5px;
overflow: hidden;
font: 300 20px "微软雅黑" !important;
} alert-content {
padding: 25px 40px;
font-weight: lighter;
font-size: 16px !important;
display: flex;
display: -webkit-flex;
justify-content: center;
align-items: center;
}
alert-btnbox {
height: 60px;
display: flex;
display: -webkit-flex;
justify-content: space-between;
align-items: center;
} alert-btn {
display: flex;
display: -webkit-flex;
justify-content: center;
align-items: center;
width: calc(50% - .5px);
height: 100%;
cursor: pointer;
color: #fff;
letter-spacing: 2px;
}
#lq-alert-canc-btn{
color: #D3D3D3;
border-top:1px solid #D3D3D3;
border-right:1px solid #D3D3D3;
}
#lq-alert-sure-btn{
color: #FF0000;
border-top:1px solid #D3D3D3;
border-right:1px solid #D3D3D3;
}
#alert-btn:active {
background: rgb(35, 106, 118);
border-top:1px solid #696969; } .alert-sure-btn {
width: 100%;
} .lq-alert-text-ipt {
box-sizing: border-box;
border: 1px solid #d3d3d3;
border-radius: 3px;
outline: none;
width: 100%;
height: 35px;
padding-left: 8px;
color: #696969;
font: 300 14px "微软雅黑";
}
alert-title {
display: flex;
display: -webkit-flex;
justify-content: center;
align-items: center;
text-align: center;
margin: 0 auto;
margin-top: 30px;
background: url(../images/smile.png) no-repeat center center;
background-size: cover;
width: 70px;
height: 70px;
}

2、引入confirm.js

;(function (window) {
let lqAlertView = function (options) {
// 定义属性
this.sureBtn = null;
this.cancelBtn = null;
this.textInput = null;
// 设置默认属性
this.configs = {
"type": "default",
"title": "",
"message": "",
"autoClose": 0,
"placeholder": "",
"cancelTitle": "离开",
"sureTitle": "再做一张",
"cancelCallBack": "",
"sureCallBack": ""
};
// 扩展默认属性
options && this.extend(this.configs, options);
// 初始化方法
this.init();
// 事件添加
this.sureBtn && this.addEvent(this.sureBtn, "click", this.btnClick.bind(this));
this.cancelBtn && this.addEvent(this.cancelBtn, "click", this.btnClick.bind(this));
document.body.style.cssText = "overflow: hidden;";
// 判断是否自动关闭
this.configs.autoClose && setTimeout(this.close, this.configs.autoClose);
}; lqAlertView.prototype = {
init: function () {
var config = this.configs,
alertHtmls = "";
switch (config.type) { case "confirm": {
alertHtmls =
"<lq-alert>" +
"<alert-wrap>" +
"<alert-title></alert-title>" +
"<alert-content>" + config.message + "</alert-content>" +
"<alert-btnbox>" +
"<alert-btn id='lq-alert-canc-btn'>" + config.cancelTitle + "</alert-btn>" +
"<alert-btn id='lq-alert-sure-btn'>" + config.sureTitle + "</alert-btn>" +
"</alert-btnbox>" +
"</alert-wrap>" +
"</lq-alert>";
} break;
}
document.body.insertAdjacentHTML("beforeend", alertHtmls);
this.sureBtn = document.getElementById("lq-alert-sure-btn");
this.cancelBtn = document.getElementById("lq-alert-canc-btn");
this.textInput = document.getElementById("lq-alert-text-ipt");
},
extend: function (oldObj, newObj) {
for(var key in newObj) {
oldObj[key] = newObj[key];
}
return oldObj;
},
addEvent: function(el, type, callBack) {
if (el.attachEvent) {
el.attachEvent('on' + type, callBack);
} else {
el.addEventListener(type, callBack, false);
}
},
btnClick: function (e) {
e = e || event;
var _this = this,
_tarId = e.target.id,
_configs = this.configs;
switch(_tarId) {
// 点击取消按钮
case "lq-alert-canc-btn":{
_configs.cancelCallBack && _configs.cancelCallBack();
_this.close();
// window.location.href
} break;
// 点击确认按钮
case "lq-alert-sure-btn": {
var text = _configs.type == "prompt" ? _this.textInput.value : "" ;
_configs.sureCallBack && _configs.sureCallBack(text);
_this.close();
}break;
} },
close: function () {
var alert = document.getElementsByTagName("lq-alert")[0];
document.body.removeChild(alert);
document.body.style.cssText = "overflow: auto;"; }
}; window.lqAlertView = lqAlertView;
})(window);

3、实例化使用

 new lqAlertView({
type: "confirm",
title: "",
message: "您还可以再寄出"+(2 - parseInt(data.data.num))+"张哦",//邀请函正在加紧制作中,
sureCallBack: function (e) {
var url = encodeURI("editPostcard.html");
window.location.href = url;
},
cancelCallBack: function (e) {
wx.closeWindow();
}
})

自定义确定框(confirm)的更多相关文章

  1. 利用bootstrap的modal组件自定义alert,confirm和modal对话框

    由于浏览器提供的alert和confirm框体验不好,而且浏览器没有提供一个标准的以对话框的形式显示自定义HTML的弹框函数,所以很多项目都会自定义对话框组件.本篇文章介绍自己在项目中基于bootst ...

  2. 在ASP.NET中引用自定义提示框

    在html网页中自定义提示框 正文: 在一般的B/S架构中项目,与用户的交互信息是非常重要的.在一般的情况下,设计人员都在把用户信息呈现在html中,用div和span去弹出相关信息.对于一般的情况而 ...

  3. js确认框confirm()用法实例详解

    先为大家介绍javascript确认框的三种使用方法,具体内容如下 第一种方法:挺好用的,确认以后才能打开下载地址页面.原理也比较清晰.主要用于删除单条信息确认. ? 1 2 3 4 5 6 7 8 ...

  4. Qt之自定义搜索框

    简述 关于搜索框,大家都经常接触.例如:浏览器搜索.Windows资源管理器搜索等. 当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定. 方案一:调用QLineEdit现有接口 void ...

  5. 【Qt】Qt之自定义搜索框【转】

    简述 关于搜索框,大家都经常接触.例如:浏览器搜索.Windows资源管理器搜索等. 当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定. 简述 效果 细节分析 Coding 源码下载 效果 ...

  6. 【转】bootbox自定义dialog、confirm、alert样式,以及基本设置方法setDefaults中可用参数

    <html> <head> <meta charset="utf-8"> <meta name="viewport" ...

  7. Android自定义View——自定义搜索框(SearchView)

    Android自定义View——自定义搜索框(SearchView) http://www.apkbus.com/android-142064-1-1.html

  8. Xamarin Android自定义文本框

    xamarin android 自定义文本框简单的用法 关键点在于,监听EditText的内容变化,不同于java中文本内容变化去调用EditText.addTextChangedListener(m ...

  9. CSS学习笔记三:自定义单选框,复选框,开关

    一点一点学习CCS,这次学习了如何自定义单选框,复选框以及开关. 一.单选框 1.先写好body里面的样式,先写几个框 <body> <div class="radio-1 ...

  10. bootStrap-table服务器端后台分页的使用,以及自定义搜索框的实现,前端代码到数据查询超详细讲解

    关于分页,之前一直纯手写js代码来实现,最近又需要用到分页,找了好多最终确定bootstrap-table,正好前端页面用的是bootstrap. 首先下载BootStrap-table的js和CSS ...

随机推荐

  1. [JZOJ4788] 【NOIP2016提高A组模拟9.17】序列

    题目 描述 题目大意 一个序列,每次可以使一段区间内的所有数加一(模四). 问最少的操作次数. 思考历程 一看这题目,诶,这不就是那道叫密码锁的题目吗? 然后随便打一打,样例过了,就再也没有思考这一题 ...

  2. display和position以及其余标签的使用

    今天主要学习了两大标签display和position:中文名字是显示和位置,这两个元素在前端的学习还是很重要的,因为在css的布局里面会经常用到这两种元素. 还有一些其余的标签例:margin,pa ...

  3. Codeforces Round #599 (Div. 2)的简单题题解

    难题不会啊…… 我感觉写这个的原因就是因为……无聊要给大家翻译题面 A. Maximum Square 简单题意: 有$n$条长为$a_i$,宽为1的木板,现在你可以随便抽几个拼在一起,然后你要从这一 ...

  4. nginx源码分析——内存池

    内存池的目的就是管理内存,使回收内存可以自动化一些. ngx_palloc.h /* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. * ...

  5. Pyhon基本数据类型

    1.数字 1.布尔型(bool) bool型只有两个值:True和False a = False b = True 2.整形 int型 n = 12 a = "12" 将字符串类型 ...

  6. mac使用ssh出现permission denied(publickey)

    看出错信息是权限太开放的问题,google了一下,修改权限,不只是需要修改 .pem 文件的权限,还需要修改.ssh目录和用户目录 chmod go-w ~/ chmod ~/.ssh chmod ~ ...

  7. ES6之数值的扩展学习

    引自:http://es6.ruanyifeng.com/#docs/number 二进制和八进制表示法 ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示. 0 ...

  8. vue-cli 构建项目

    1.安装vue-cli和webpack npm install webpack -g npm install vue-cli -g 2.vue-cli初始化项目 vue init webpack-si ...

  9. 高德地图定位不到 报错 location Error, ErrCode:7, errInfo:KEY错误 请到http://lbs.amap.com/api/android-location-sdk/abouterrorcode/查看错误码说明.

    出现该问题的可能是高德地图的配置不准确: 仔细配对一下 看sha1 是否是通过应用签名生成的  要区分发布版的sha1 跟调试版的sha1  是不相同的 (小编我第一次反这种错误的时候 是因为我把高得 ...

  10. 前端在本地启动服务预览html页面

    在开发移动端项目时浏览器里出来的效果往往到真机上和预想的有出入,在开发过程中知道了一个可以在本地自己启动一个服务器在手机预览的办法. 1.首先在终端安装http. npm i http-server ...