SweetAlert2

基于t4t5/sweetalert


一个漂亮的、响应式的、可定制的和可访问(WAI-ARIA)的JavaScript弹窗

无任何依赖

下载 国外CDN 国内CDN

让我们来比较看一下错误消息的显示。第一个使用了内置的alert,第二个使用了sweetAlert2

普通alert

代码:
alert('哎呦……出错了!');

SweetAlert2

代码:
sweetAlert(
  '哎呦……',
  '出错了!',
  'error'
)

是不是非常的酷?无论你是在电脑、手机还是平板上,SweetAlert2都会在页面上自动居中显示,这看起来非常棒。SweetAlert2还可高度定制,正如下面你所看到的!

示例

下载 & 安装

$ npm install sweetalert2

$ bower install sweetalert2

或从CDN下载:
国外:jsdelivr.com/sweetalert2 | cdnjs.com/limonte-sweetalert2
国内:limonte-sweetalert2

使用

1. 引用必要的文件初始化插件:

<script src="bower_components/sweetalert2/dist/sweetalert2.min.js"></script>
<link rel="stylesheet" href="bower_components/sweetalert2/dist/sweetalert2.min.css">

<!-- Include a polyfill for ES6 Promises (optional) for IE11 and Android browser -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/core-js/2.4.1/core.js"></script>

// ES6 Modules
import { default as swal } from 'sweetalert2'

// CommonJS
const swal = require('sweetalert2')

2. 页面加载完成后调用sweetAlert2函数

swal({
    title: '错误!',
    text: '是否继续',
    type: 'error',
    confirmButtonText: '酷'
})

配置

你可以使用这些参数,通过一个对象传入到sweetAlert2中:

参数
默认值
描述
title null 弹窗HTML标题。可以通过对象的”title”属性或第一个参数进行传递。
titleText null 弹窗的文本标题,防止HTML注入。
text null 弹窗的文本描述。可以通过对象的”text”属性或第二个参数进行传递。
html null 弹窗的HTML描述。如果同时提供了“text”和“html”参数,“text”将被使用。
type null 弹窗的类型。SweetAlert2有5个内置类型,可以展示相应的图标动画: "warning"、"error"、 "success"、"info"和"question"。可以通过对象的”type”属性或第三个参数进行传递。
target 'body' 添加弹窗到该容器元素中。
input null 输入字段类型,可以是 text, email, password, number, tel, range, textarea, select, radio, checkbox, fileurl.
width '500px' 弹窗宽度,包括paddings(box-sizing:border-box)。单位可以是px%
padding 20 弹窗的padding
background '#fff' 弹窗的背景(CSS background属性).
customClass null 弹窗的自定义css类
timer null 定时关闭弹窗的计时器,单位为ms(毫秒)。
animation true 如果设置为false,弹窗的CSS动画将被禁用。
allowOutsideClick true 如果设置为false,用户无法通过点击弹窗外部关闭弹窗。
allowEscapeKey true 如果设置为false,用户无法通过按下Escape键关闭弹窗。
allowEnterKey true 如果设置为false,用户无法通过按Enter键或空格键确认弹窗,除非手动使确认按钮获得焦点。
showConfirmButton true 如果设置为false,“确认”按钮将会隐藏。 当你使用自定义HTML描述时时,这可能很有用。
showCancelButton false 如果设置为true,“取消”按钮将会显示,用户可以点击取消按钮关闭弹窗。
confirmButtonText 'OK' 使用该参数来修改“确认”按钮的显示文本。
cancelButtonText 'Cancel' 使用该参数来修改“取消”按钮的显示文本。
confirmButtonColor '#3085d6' 使用该参数来修改“确认”按钮的背景颜色(必须是十六进制值)。
cancelButtonColor '#aaa' 使用该参数来修改“取消”按钮的背景颜色(必须是十六进制值)。
confirmButtonClass null 可以为“确认”按钮设置自定义类
cancelButtonClass null 可以为“取消”按钮设置自定义类
buttonsStyling true 默认按钮样式使用swal2的样式,如果你想要使用自己的CSS类(例如Bootstrap类),将该参数设置为false
reverseButtons false 如果想要调换默认按钮的位置(将“确认”按钮放到右边),将该参数设置为true
focusCancel false 如果想要在默认情况下“取消”按钮获取焦点,将该参数设置为true
showCloseButton false 设置为true,在弹窗的右上角显示关闭按钮。
showLoaderOnConfirm false 设置为true会禁用按钮并显示loading,适用于AJAX请求。
preConfirm null 确认之前执行的函数,应返回Promise,请参考使用案例
imageUrl null 为弹窗添加一个自定义图标。这个参数是一个字符串图片路径。
imageWidth null 如果设置了imageUrl,你可以指定imageWidth来设置图标的宽度,单位为px。
imageHeight null 设置自定义图标的高度,单位为px。
imageClass null 设置自定义图标的CSS类
inputPlaceholder '' 输入框的placeholder
inputValue '' 输入框的初始值。
inputOptions {} or Promise 如果input参数设置为"select""radio",你可以设置该参数。对象key将表示项的值,对象value将表示项的显示文本
inputAutoTrim true 自动删除字符串首尾两端的空格。设置该参数为false会禁用自动去空格。
inputAttributes {} 添加到输入框的HTML input元素属性(例如min, max, autocomplete, accept)。对象key将表示属性名称,对象值将表示属性值。
inputValidator null 输入框的验证器,应返回Promise,请参考使用案例
inputClass null 输入框的自定义CSS类。
progressSteps [] 进度步骤对弹窗队列很有用,请参考使用示例
currentProgressStep null 当前激活的进度步骤,默认值是swal.getQueueStep()
progressStepsDistance '40px' 进度步骤之间的距离。
onOpen null 弹窗打开时运行的函数,弹窗DOM元素作为第一个参数提供给该函数。
onClose null 弹窗关闭时运行的函数,弹窗DOM元素作为第一个参数提供给该函数。

你可以使用swal.setDefaults(customParams)重新定义默认参数。

处理关闭

当用户将弹窗关闭时,swal()返回的Promise将使用带有字符串参数的reject来记录弹窗被退出的原因:

字符串 描述 相关配置
'overlay' 用户点击遮罩层。 allowOutsideClick
'cancel' 用户点击取消按钮。 showCancelButton
'close' 用户点击关闭按钮。 showCloseButton
'esc' 用户敲击Esc键。 allowEscapeKey
'timer' 定时自动关闭。 timer

如果未处理失败,则将会记录为错误。为了避免这种情况,请在Promise中添加失败处理。
或者你可以使用.catch(swal.noop)作为简单阻止错误的快速方法:

swal(...)
  .catch(swal.noop)

弹窗类型

输入类型

不支持多个输入框,您可以通过使用htmlpreConfirm参数来实现它们。在preConfirm()函数中,您可以将自定义结果传递给preConfirm()函数作为参数:

方法

方法 描述
swal.isVisible() 判断弹窗是否处于显示状态
swal.setDefaults({Object}) 如果你在使用SweetAlert2时使用了很多相同的配置参数,可以在程序开始时使用setDefaults一次性设置这些相同的参数!
swal.resetDefaults() 将配置重置为默认值。
swal.close() or swal.closeModal() 以编程方式关闭当前打开的SweetAlert2弹窗。
swal.enableButtons() 启用“Confirm(确认)”和“Cancel(取消)”按钮。
swal.getTitle() 获取弹窗标题。
swal.getContent() 获取弹窗内容。
swal.getImage() 获取图片
swal.getConfirmButton() 获取“Confirm(确认)”按钮。
swal.getCancelButton() 获取“Cancel(取消)”按钮。
swal.disableButtons() 禁用“Confirm(确认)”和“Cancel(取消)”按钮。
swal.enableConfirmButton() 只启用“Confirm(确认)”按钮。
swal.disableConfirmButton() 只禁用“Confirm(确认)”按钮。
swal.showLoading() or swal.enableLoading() 禁用按钮并显示加载。这对ajax请求很有用。
swal.hideLoading() or swal.disableLoading() 启用按钮并且隐藏加载。
swal.clickConfirm() 以编程方式点击“Confirm(确认)”按钮。
swal.clickCancel() 以编程方式点击“Cancel(取消)”按钮。
swal.showValidationError(error) 显示验证错误信息。
swal.resetValidationError() 隐藏验证错误信息。
swal.getInput() 获取input DOM节点,此方法与input参数一起使用。
swal.disableInput() 禁用输入。禁用的input元素是不可用的和不可点击的。
swal.enableInput() 启用输入。
swal.queue([Array]) 提供一组SweetAlert2参数以显示多个弹窗,一个接着一个显示。请参考使用案例
swal.getQueueStep() 获取队列中当前弹窗的索引。当没有激活的队列时将返回null
swal.insertQueueStep() 向队列中插入一个弹窗,你可以使用第二参数指定弹窗的位置。默认弹窗将会添加到队列的末尾。
swal.deleteQueueStep(index) 从队列中删除索引值的弹窗。
swal.getProgressSteps() 获取进度步骤
swal.setProgressSteps([]) 设置进度步骤
swal.showProgressSteps() 显示进度步骤
swal.hideProgressSteps() 隐藏进度步骤

贡献

如果你想要添加新特性,欢迎你在GitHub上fork SweetAlert2项目!

本站点翻译自SweetAlert2