Подтверждение удаления!
Привет!
На сайте необходимо сделать подтверждение удаления файла. Если использовать простой confirm то все работает
function delete ()
{
valid = false;
var del = confirm ('Удалить?');
if (del == true)
{ valid = true; } else {valid = false; }
return valid;
}
Но JS может быть отключен либо настройками браузера (а учесть, что программа использоваться будет исключительно во внутренней сети, то рано или поздно АИБы потребуют отключить JS)/ Хочется попробовать прикрутить sweetalert
function delete ()
{
swal({
title: "Внимание!",
text: "Удалить файл?",
icon: "warning",
buttons: true,
dangerMode: true,
})
.then((willDelete) => {
if (willDelete) {
valid = true;
} else {
valid = false ;
}
});
return valid;
}
Но почему не срабатывает? Если нажать Отмену, то все норм, скрипт останавливается. А еcли же нажать ОК, то тоже ничего не происходит |
Цитата:
Цитата:
Строка 17 return valid; выполняется раньше, чем строки 11-15 Это асинхронная операция, и вы должны возвращать Promise. Ну типа просто
function delete ()
{
return swal({
title: "Внимание!",
text: "Удалить файл?",
icon: "warning",
buttons: true,
dangerMode: true,
})
}
А вызывать в асинхронной функции value = await delete() |
Чем дальше, тем непонятнее
Конечно это тоже js, но этот хотя бы пользователь сам не отключит, поставив галочку в окошке. И как же все-таки сделать? Я не понимаю. Как в этом
function delete ()
{
return swal({
title: "Внимание!",
text: "Удалить файл?",
icon: "warning",
buttons: true,
dangerMode: true,
})
}
использовать value = await delete() ? |
Цитата:
Функция swal возвращает Promise, который и возвращается из функции delete Где то в другой функции (она должна быть асинхронной), где требуется подтверждение удаления файла, вы вызываете
value = await delete()
if (value) {/* удалить файл */}
Можно конечно и так (тогда функцию не обязательно объявлять асинхронной)
delete().then (value =>{
if (value) {/* удалить файл */}
})
|
| Часовой пояс GMT +3, время: 07:28. |