наложение jquery не закроется

#jquery #jquery-ui #jquery-plugins

#jquery #jquery-пользовательский интерфейс #jquery-плагины

Вопрос:

Привет, у меня возникла проблема с использованием оверлеев jquery, которые не закрываются, когда мой скрипт завершил обработку.

Все, что я делаю, это показываю очень простую форму, принимающую значения при отправке, обрабатывающую их в фоновом режиме и добавляющую их на страницу. Как только это будет сделано, наложение должно закрыться, однако оно просто остается там и не исчезнет, пока я не выполню полное обновление страницы.

Мой код Jquery выглядит следующим образом:

 function employmenthistory(){

    $(document).ready(function(){

        /**
        * Modal Dialog Boxes Setup
        */
        var triggers = $(".modalInput").overlay({

            // some mask tweaks suitable for modal dialogs
            mask: {
                color: '#ebecff',
                loadSpeed: 200,
                opacity: 0.7
            },

            closeOnClick: false
        });

        /* User Input Prompt Modal Box */
        $("#employmentprompt form").submit(function(e) {

            // get user input
            var name = $("#name", this).val();
            var role = $('#role', this).val();
            var title = $("#title", this).val();

            //we need to know how many elements already exist
            var elementCount = $('li.note').length;

            //update server with information about this employment
            $.ajax({
                url: '/addempl/',
                type : 'post',
                data : "name="   name   "amp;role="   role   "amp;title="   title   "amp;ec="   elementCount,
                dataType: "json",
                success : function(msg){

                    //confirm the event was successful
                    if(msg.status == 'success'){

                        var item = msg.data;

                        //we now add to the ul for elements
                        $('ul.listing').append(item);

                    }else{

                        //failed to process so display error
                        $('div.message error').html('<p>We were unable to add your employment history</p><p>Please try again</p>');
                    }
                },
                error : function(err){

                    //failed to call server 
                    $('div.message error').html('<p>We were unable to add your employment history</p><p>Please try again</p>');
                }
            });

            // close the overlay
            triggers.eq(0).overlay().close();

            // do not submit the form
            return e.preventDefault();
        });
    });



}
  

Все аспекты этого кода работают нормально, за исключением того, когда я добираюсь до

 triggers.eq(0).overlay().close();
  

Наложение с формой в нем остается на странице. Существует только один элемент modelInput и форма, которые можно вызвать, поэтому я не уверен, почему это не удается.

Все, что я сделал, это последовал примеру, который можно найти здесь:

http://flowplayer.org/tools/demos/overlay/modal-dialog.html

Любая помощь с этим была бы принята с благодарностью.

Спасибо.

Ответ №1:

Я думаю, вам нужно использовать api аргумент в вашей команде overlay. Я не вижу этого в их примере, но я помню, что это было моей проблемой в прошлом.

     var triggers = $(".modalInput").overlay({

        // some mask tweaks suitable for modal dialogs
        mask: {
            color: '#ebecff',
            loadSpeed: 200,
            opacity: 0.7
        },

        closeOnClick: false,
        api: true
    });
  

Обновить

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

Это код, который я использую в настоящее время…

 var currentModal;

function openModal(divName){
    closeModal();
    if ($('#'   divName).length>0){
        currentModal=$('#' divName).overlay({
            mask: {color: '#000000'},    
            top:'0px',
            api: true        
        }).load();
    }
}    
function closeModal(){
    if (currentModal){
        if (currentModal.isOpened){
            currentModal.close();
        }
    }
}
  

Комментарии:

1. к сожалению, это вызвало полное обновление страницы / отправку формы.