Возвращаемое значение диалогового окна jquery UI - PullRequest
4 голосов
/ 05 января 2012

Вы можете найти решение этой проблемы во многих сообщениях ( Пост 1 , Пост2 ), но их решение не работает для меня.

Вот обычное диалоговое окно jquery, написанное мной.

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

Я открою диалоговое окно с кодом:

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

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

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

Мне НУЖНО returnVal вернуть boolean значение (true / false), но возвращается javascript object.

Ответы [ 2 ]

7 голосов
/ 05 января 2012

Вы не можете вернуть что-либо из функций 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/

4 голосов
/ 24 февраля 2013

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

<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>

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

...