Дождаться ответа пользователя
Знаю, что тема стара как мир, но мне нужно дождаться ответа пользователя и "продолжить" выполнение функции. Может есть какие-нибудь решения без 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, время: 04:48. |