Jquery - использование модального диалога во время выбора при автозаполнении - PullRequest
1 голос
/ 04 января 2012

Я пытаюсь заставить модальный диалог Jquery UI вступить во владение после выбора элемента автозаполнения. У меня все выскакивает как исключено, но после запуска модального диалога запускается код. В конце я хочу, чтобы это диалоговое окно всплыло и реагировало на основе кнопки.

Выберите из автозаполнения:

        select: function( event, ui ) {
        if(ui.item.squad != '0'){
            console.info('popup');
            var choice=null;

            $( "#dialog-confirm" ).dialog({
                resizable: false,
                height:140,
                modal: true,
                buttons: {
                    Cancel: function() {
                        choice = false;
                        $( this ).dialog( "close" );
                    },
                    "Move Shooter": function() {
                        choice = true;
                        $( this ).dialog( "close" );

                    }
                }
            });
            if(!choice){
                console.info($(this));
                $(this).text("");
                $(this).val("");
                $(this).attr("name", "");
                $(this).attr("value", "");
                console.info("false");
                return;
            }
        }

Большая часть кода взята из jquery ui здесь.

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

1 Ответ

0 голосов
/ 04 января 2012

Ваш код не будет работать, так как он выполнит весь этот блок и возвратит.То, что вы хотите сделать, это определить функцию, которая выполняется после того, как пользователь сделал свой выбор.По сути, вы могли бы сделать это, переместив оператор if, который имеется в коде диалогового окна, в его собственную функцию, а затем вызвать эту функцию как часть кода вашего обработчика кнопок.

Пример:

Определите где-нибудь обратный вызов:

function handleDialogResponse(choice) {
    if(!choice){
        console.info($(this));
        $(this).text("");
        $(this).val("");
        $(this).attr("name", "");
        $(this).attr("value", "");
        console.info("false");
    }
}

Затем измените код кнопки диалога на что-то вроде этого:

buttons: {
    Cancel: function() {
        $( this ).dialog( "close" );

        handleDialogResponse(false);
    },
    "Move Shooter": function() {
        $( this ).dialog( "close" );

        handleDialogResponse(true);
    }
}
...