Дождаться ответа пользователя
Знаю, что тема стара как мир, но мне нужно дождаться ответа пользователя и "продолжить" выполнение функции. Может есть какие-нибудь решения без 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() |
kostyanet, ты с каждым комментарием доказываешь что твоя компетенция в программировании стремится к нулю. Твой аппаратный мозг не приемлет парадигмы программирования.
Цитата:
|
Цитата:
2) Sharepoint при попытке сохранить элемент вызывает метод PreSaveItem, который вызывает метод PreSaveAction (SaveAction - это он и есть, ошибся немного) если он создан. Таким образом программисту дают сделать валидацию, т.е. достаточно написать свой метод PreSaveAction. Но я не могу изменить порядок его вызова, его аргументы и т.д. Цитата:
Спасибо всем за помощь. Чуда не случилось - javascript не обмануть. Придется подменять кнопку и костылями изменять порядок вызова PreSaveAction() |
Конкретно за sharepoint не скажу, но обычно продукты мелкомягких позволяют пользоваться vbscript, а также сущностями vbscript в jscript. А уже там есть всякие Sleep и прочее.
|
Цитата:
С мс связываться опасно. У них там свои понятия по изложению документации в которых разобраться простому смертному за бесплатно не всегда реально. Дайте ссылку на метод. |
Цитата:
Автору. И еще такая особенность платформ МС - они не популярны. Например чтобы написать простенький скрипт на WScript мне приходится сперва рыться в msdn, ничерта там не поняв шариться с вопросами по инету и там ничего не найдя вообще делать усилие, возвращаться к документации пытаясь вникнуть в ход глубоких мыслей персонала МС. Ваш вопрос задан ровно 1 раз http://sharepoint.stackexchange.com/...ialog-response Ну полтора http://stackoverflow.com/questions/1...-in-sharepoint потому без ответа остался. Выберите другую платформу и полегчает. |
Кстати, если вы ищите, то подделывайте свою национальность, иначе гугль загадит результаты национальными мифами. Делается так: надо выйти с гугля, убить куки, перейти на com и в адресную строку вписать webhp?complete=0
|
Deff, тоже как-то пробовал делать такой вариант с бесконечным циклом и вот что скажу: лучше не делать так, браузер начинает виснуть, да и как-то не правильно это.
|
Часовой пояс GMT +3, время: 10:36. |