2012-01-05 6 views
4

Вы можете найти решение по этому вопросу во многих сообщениях (Post 1, Post2), но их решение не работает для меня.Возвращаемое значение диалогового окна пользовательского интерфейса jQuery

Это нормальное диалоговое окно jquery, написанное мной.

$("#dialog").dialog({ 
     autoOpen:false, 
     buttons:{ 
      "ok":function(){           
         $(this).dialog("close"); 
         return true;                  
        }, 
      "cancel":function(){       
         $(this).dialog("close");  return false;     
       } 
      } 
}); 

Я открою DialogBox с кодом:

var returnVal=$("#dialog").dialog("open"); 

Мне нужно вернуть false, если пользователь нажимает кнопку «отмена» и вернуть true, если пользователь нажимает «ОК».

var returnVal=$("#dialog").dialog("open"); 

НУЖНА returnVal вернуть boolean значение (истина/ложь), но возвращает JavaScript object.

ответ

5

Вы не можете вернуть что-либо из функций OK/отмена, поскольку они являются обработчиками событий, которые обрабатываются только одним нажатием кнопки.

Используйте отдельную функцию для обработки результата:

$mydialog = $("#dialog").dialog({ 
    autoOpen: false, 
    buttons: { 
     "ok": function() { 
      $(this).dialog("close"); 
      processResult(true); 
     }, 
     "cancel": function() { 
      $(this).dialog("close"); 
      processResult(false); 
     } 
    } 
}); 

$mydialog.dialog("open"); 


function processResult(result) { 
    alert(result); 
} 

Рабочего пример: http://jsfiddle.net/nz2dH/

+0

Спасибо ManseUK. –

+0

извините ManseUK (я хотел принять его с большой благодарностью!), Но подождите, подождите ... Я работаю над этим на своей странице .. Я просто предоставил вам небольшой код. Я не могу рекламировать «результат», когда форма отправлена. –

+0

@Umesh Я хотел, чтобы вы прочитали эту страницу и приняли другие ответы тоже - не для этого вопроса ... можете ли вы создать http://jsfiddle.net/ со своей проблемой – ManseUK

4

У меня есть не реализует Да Нет диалога/подтверждения с пользовательскими сообщениями и функциями обратного вызова, как это. Это полезно, если вы хотите использовать тот же диалог для различных целей.

<script type="text/javascript"> 
    // prepare dialog 
    $(function() { 
     $("#confirm-message-dialog").dialog({ 
      autoOpen: false, 
      modal: true, 
      closeOnEscape: false, 
      buttons: { 
       Yes: function() { 
        $(this).dialog("close"); 
        $(this).data("callback")(true); 
       }, 
       No: function() { 
        $(this).dialog("close"); 
        $(this).data("callback")(false); 
       } 
      } 
     }); 
    }); 

    // open dialog with message and callback function 
    function confirmMessageDialog (message, callback) { 
     $('#confirm-message-dialog-message').text(message); 
     $('#confirm-message-dialog').data("callback", callback).dialog("open"); 
    }; 
</script> 

<!-- The dialog content --> 
<div id="confirm-message-dialog" title="Warning"> 
    <p id="confirm-message-dialog-message"></p> 
</div> 

Надеется, что это помогает другим, а :)

Смежные вопросы