jQuery - дождаться подтверждения возврата в диалоге - PullRequest
0 голосов
/ 28 ноября 2011

У меня есть следующий код jQuery:

  <script type="text/javascript" charset="utf-8">
    $(function() { 

       initConfirmbinding();

       $('#dialog').dialog({
        autoOpen: false,
        width: 'auto',
        modal: true,

        buttons: {
              "Delete": function() { 
                     $(this).dialog("close");            
                     alert("You pressed OK!");
                     return true;
                     }, 
              "Cancel": function() { 
                     $(this).dialog("close"); 
                     return false;
                     } 
        }
      });

    function initConfirmbinding(){
           // Dialog Link 
           $('.confirm').click(function(){
                 return $('#dialog').dialog('open'); // Here it doesn't stops for the return value!!
           });
    }
  </script>

И этот другой код:

 ...
<c:foreach ...>
 <h:commandLink styleClass="confirm" action="#{myBean.delete}">
      <img src="/resources/images/delete-bw.png"/>    
 </h:commandLink>
<c/:foreach>

 ...
 <!-- ui-dialog -->
<div id="dialog" title="Question" style="display: none;">
        This item will be deleted, confirm?         
</div>

Мне нужно позвонить на myBean.delete послепользователь подтверждает диалог , но он просто продолжает и делает вызов с открытым диалогом.Как я могу сделать диалог, чтобы вернуть синхронизированное значение?Таким образом, commandLink может знать, выполнять действие или нет.

Я знаю, что он может использовать callbacks , но обратные вызовы не являются опцией, так как commandLink ожидаетрезультат, чтобы решить выполнить действие, и если я использую обратные вызовы, мне нужно будет сделать прямой вызов commandLink.click, который сделает бесконечный цикл.

Даже подумав, подумав еще раз, может быть способиспользовать обратные вызовы , но как я могу отправить в диалог , какой обратный вызов будет вызывать, когда это будет сделано.

С уважением.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2011

На мой взгляд, ваша проблема может быть решена, если вы выставите метод bean-компонента #{myBean.delete} как функцию javascript и вызовете его соответствующим образом в обработчиках Delete и Cancel диалога jQueryUI.Если вы можете использовать библиотеку RichFaces, обратитесь к a4j:jsFunction Но в этом случае нажатие кнопки удаления должно быть чисто ajax-вызовом.то есть вы можете вызвать диалог в onclick и не указывать никаких действий.В противном случае вы не сможете остановить обратную передачу.

0 голосов
/ 28 ноября 2011

Нет способа заставить выполнение кода остановиться и ждать.Единственное, что вы можете сделать, это создать модальное диалоговое окно, заблокировав страницу под диалоговым окном, чтобы пользователь мог что-то выбрать, прежде чем продолжить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...