Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.02.2022, 07:32
Интересующийся
Отправить личное сообщение для nameivan Посмотреть профиль Найти все сообщения от nameivan
 
Регистрация: 24.05.2008
Сообщений: 17

Подтверждение удаления!
Привет!

На сайте необходимо сделать подтверждение удаления файла. Если использовать простой 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ли же нажать ОК, то тоже ничего не происходит
Ответить с цитированием
  #2 (permalink)  
Старый 22.02.2022, 07:48
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от nameivan
Хочется попробовать прикрутить sweetalert

function delete ()
{
swal({
  title: "Внимание!",
....
А это не тот самый отключенный JS?
Сообщение от nameivan
Но почему не срабатывает?
Потому, что
Строка 17 return valid;
выполняется раньше, чем
строки 11-15

Это асинхронная операция, и вы должны возвращать Promise.
Ну типа просто

function delete ()
{
return swal({
  title: "Внимание!",
  text: "Удалить файл?",
  icon: "warning",
  buttons: true,
  dangerMode: true,
})
}


А вызывать в асинхронной функции
value = await delete()

Последний раз редактировалось voraa, 22.02.2022 в 07:59.
Ответить с цитированием
  #3 (permalink)  
Старый 22.02.2022, 08:10
Интересующийся
Отправить личное сообщение для nameivan Посмотреть профиль Найти все сообщения от nameivan
 
Регистрация: 24.05.2008
Сообщений: 17

Чем дальше, тем непонятнее
Конечно это тоже js, но этот хотя бы пользователь сам не отключит, поставив галочку в окошке.

И как же все-таки сделать? Я не понимаю.
Как в этом
function delete ()
{
return swal({
  title: "Внимание!",
  text: "Удалить файл?",
  icon: "warning",
  buttons: true,
  dangerMode: true,
})
}

использовать value = await delete() ?
Ответить с цитированием
  #4 (permalink)  
Старый 22.02.2022, 11:30
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от nameivan
Конечно это тоже js, но этот хотя бы пользователь сам не отключит, поставив галочку в окошке.
Почему? Он не в браузере выполняется? А где?

Функция swal возвращает Promise, который и возвращается из функции delete

Где то в другой функции (она должна быть асинхронной), где требуется подтверждение удаления файла, вы вызываете

value = await delete()
if (value) {/* удалить файл */}


Можно конечно и так (тогда функцию не обязательно объявлять асинхронной)

delete().then (value =>{ 
   if (value) {/* удалить файл */}
})
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
После удаления атрибута ничего не меняется sash003 jQuery 6 01.02.2015 23:12
Как удалить именно тот див, в котором находиться сама кнопка удаления? Wahtel Элементы интерфейса 1 21.11.2014 13:39
Проблемы с .append(). Воскрешение после удаления. Brook Events/DOM/Window 2 12.09.2014 11:46
После удаления нужно обновить страницу Pumych Общие вопросы Javascript 3 15.02.2011 22:55
Событие на подтверждение удаления ssh Events/DOM/Window 3 20.08.2010 09:16