Приглашение SweetAlert с двумя полями ввода
в настоящее время работает над личным проектом. Я хочу, чтобы пользователь нажал кнопку, и пользователю будет представлено приглашение SweetAlert для проверки своих учетных данных. Однако, кода я вижу на сайте SweetAlert только одно поле ввода. Вот код, который у меня есть:
swal({
title: "Authenicating for continuation",
text: "Test",
type: "input",
showCancelButton: true,
closeOnConfirm: false,
animation: "slide-from-top",
inputPlaceholder: "Write something"
}, function(inputValue) {
if (inputValue === false) return false;
if (inputValue === "") {
swal.showInputError("You need to write something!");
return false
}
// swal("Nice!", "You wrote: " + inputValue, "success");
});
Итак, есть ли способ получить два поля ввода? Одно поле ввода пароля и другое поле ввода текста.
7 ответов
насколько я знаю, вы не можете сделать это с полки. Вы можете либо развить и реализовать, либо просто использовать HTML-элемент в качестве модального (например, как в Bootstrap В.).
теперь доступен SweetAlert2: https://limonte.github.io/sweetalert2/
согласно их информации на дне:
несколько входов не поддерживаются, вы можете достичь их с помощью html и параметры preConfirm. Внутри функции preConfirm () вы можете передайте пользовательский результат функции resolve () в качестве параметра:
swal({
title: 'Multiple inputs',
html:
'<input id="swal-input1" class="swal2-input">' +
'<input id="swal-input2" class="swal2-input">',
preConfirm: function () {
return new Promise(function (resolve) {
resolve([
$('#swal-input1').val(),
$('#swal-input2').val()
])
})
},
onOpen: function () {
$('#swal-input1').focus()
}
}).then(function (result) {
swal(JSON.stringify(result))
}).catch(swal.noop)
вы можете иметь входные данные в типе SweetAlert по умолчанию, если вы установите свойство html в true. Проблема в том, что если тип не установлен в "input", SweetAlert добавляет display: none
в полях ввода.
это немного обходной путь, но вы можете изменить это в файле js из
<input type=\"text\" tabIndex=\"3\" />\n
to
<input id=\"swalInput\" type=\"text\" tabIndex=\"3\" />\n
и измените файл css с
.sweet-alert input {
to
.sweet-alert #swalInput {
тогда вы можете просто добавить свой HTML в текстовый параметр, когда зовет, вот так:
swal({
title: "Log In to Continue",
html: true,
text: "Username: <input type='text'><br>Password: <input type='password'>"
});
этот метод просто указывает, что единственный вход, который должен быть стилизован таким образом, - это тот, который генерируется SweetAlert, так что любые входные данные, которые вы добавляете в свой текст, не будут затронуты этим стилем.
$(document).ready(function(){
$("a").click(function(){
swal({
title: "Teste",
text: "Test:",
type: "input",
showCancelButton: true,
closeOnConfirm: false,
animation: "slide-from-top",
inputPlaceholder: "User"
},
function(inputValue){
if (inputValue === false) return false;
if (inputValue === "") {
swal.showInputError("Error");
return false;
}
swal({
title: "Teste",
text: "E-mail:",
type: "input",
showCancelButton: true,
closeOnConfirm: false,
animation: "slide-from-top",
inputPlaceholder: "Digite seu e-mail"
},
function(inputValue){
if (inputValue === false) return false;
if (inputValue === "") {
swal.showInputError("E-mail error");
return false;
}
swal("Nice!", "You wrote: " + inputValue, "success");
});
});
});
});
множественные входные сигналы не поддержаны, вы можете достигнуть их путем использование параметров html и preConfirm. Обратите внимание, что в функции preConfirm вы можете передать пользовательский результат для разрешения ():
вы можете сделать это, используя таким образом:
swal({
title: 'Multiple inputs',
html:
'<h2>Login details for waybill generation</h2>'+
'<input id="swal-input1" class="swal2-input" autofocus placeholder="User ID">' +
'<input id="swal-input2" class="swal2-input" placeholder="Password">',
preConfirm: function() {
return new Promise(function(resolve) {
if (true) {
resolve([
document.getElementById('swal-input1').value,
document.getElementById('swal-input2').value
]);
}
});
}
}).then(function(result) {
swal(JSON.stringify(result));
})
}
The link here: https://limonte.github.io/sweetalert2/
Да, вы можете!!!
swal({
title: "An input!",
text: "Write something interesting:",
type: "input",
showCancelButton: true,
closeOnConfirm: false,
animation: "slide-from-top",
inputPlaceholder: "Write something"
},
function(inputValue){
if (inputValue === false) return false;
if (inputValue === "") {
swal.showInputError("You need to write something!");
return false
}
swal("Nice!", "You wrote: " + inputValue, "success");
});
вот пример использования sweetalert@^2.1.0, показывающий один способ иметь несколько полей ввода. В примере используется jQuery, но jQuery не требуется для работы этого метода.
// ==============================================================
//swal does not block, and the last swal wins
//so these swals are closed by later calls to swal, before you can see them
// ==============================================================
swal("aaa");
swal("bbb");
// ==============================================================
//for multiple inputs, use content: anHtmlElement
// ==============================================================
const div = document.createElement("div");
console.log(div);
$(div).html("first<input id='111' value='one'></input></br>second<input id='222' value='two'></input></br>third<input id='333' value='three'></input>");
swal({
title: "Three Inputs",
content: div,
// ==============================================================
//true means show cancel button, with default values
// ==============================================================
buttons: [true, "Do It"]
}).then(value => {
if (value) {
const outputString = `
value is true for confirm (i.e. OK); false for cancel
value: ${value}
` + $("#111").val() + " " + $("#222").val() + " " + $("#333").val();
// ==============================================================
// there are no open swals at this point, so another call to swal is OK here
// ==============================================================
swal(outputString);
} else {
swal("You cancelled");
}
});
alert("swal is not blocking: " + $("#111").val() + " " + $("#222").val() + " " + $("#333").val());