Дождаться ответа пользователя
Знаю, что тема стара как мир, но мне нужно дождаться ответа пользователя и "продолжить" выполнение функции. Может есть какие-нибудь решения без confirm (это работает, но мне необходимо показать пользователю форматированное сообщение) и setTimeout?
Ситуация такая: есть платформа(sharepoint), которая предоставляет возможность написать функцию валидации данных SaveAction(). В этой функции я вызываю модальный диалог с вопросом "Сохранить?". Получаю ответ в колбеке и принимаю решение. Функция SaveAction (название и атрибуты переопределить нельзя) дожидается ответа, только если мы используем confirm, что логично. Как этого добиться в модальном диалоге? Платформа Sharepoint ждет возврата true/false от этой функции, изменить это поведение невозможно. function SaveAction(){ ... var options = { callback: MyCallback } showModalDialog(options); } |
Цитата:
Нажатие еnter ? , ввод единственного символа(или заранее определенных слов) ? нажатие на кнопку "Сохранить" ? |
Цитата:
|
Цитата:
2. Кто мешает изменить логику, и запускать SaveAction() по завершении диалога модалки ? |
Цитата:
Цитата:
Цитата:
|
Цитата:
<input id="modal" placeholder='Жду ввода "Yes"'> <script type="text/javascript"> function showModalDialog(options){ var inp = document.getElementById('modal'); alert('Start Modal') while (inp.value != 'Yes') { var out=false; } return out=true; } var MyCallback = 1 function SaveAction(){ //... var options = {} if( showModalDialog(options))alert('Диалог завершен!') } SaveAction() </script> |
Благодарю за наглядную демонстрацию моего комментария ;)
|
danik.js,
Можно реализовать и многопоточность Поставь перед циклом нужное число setTimeout Короче коммент никчемный, ибо речь идёт в конце концов о возможности решении, а не безапеляционном ничего не дающем заявлении |
Цитата:
Цитата:
if (confirm()) {} на if (myConfirm()) {} |
Цитата:
Что касается бывших методов совмещения то за злоупотребления очевидно их забанили: Цитата:
Цитата:
Как видите бывает. Делается на самом деле элементарно через setInterval() |
Часовой пояс GMT +3, время: 23:20. |