Подтверждение удаления!
Привет!
На сайте необходимо сделать подтверждение удаления файла. Если использовать простой 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, время: 05:45. |