Как удалять данные в SimpleModal каждый раз, когда модальное окно закрывается - PullRequest
1 голос
/ 06 декабря 2010

Я использую плагин Эрика Мартина SimpleModal 1.4.1 с JQuery 1.4.2 для отображения базовой формы в модальном окне.

Форма содержит 2 элемента Jatuicker UI JQuery.

Все работает как задумано (я думаю). Datepickers отображают свои календари, когда пользователь выделяет текстовые поля Datepicker. Когда пользователь нажимает кнопку «Отмена», модальное изображение исчезает, а значения, содержащиеся в элементах Datepicker, скрываются. Вот в чем проблема.

Мне нужно модальное окно, чтобы «забыть» все значения формы, которые оно содержит, когда окно закрыто, либо потому, что форма была отправлена, либо была нажата кнопка отмены, а не просто скрыть их. Я не против, если мне придется делать это программно, если это необходимо.

Мой текущий код SimpleModal выглядит так:

$('#NewDeliverable').click( function() {
            $("#DeliverableFormContainer").modal({onOpen: function (dialog) {
                dialog.overlay.fadeIn('slow', function () {
                    dialog.data.hide();
                    dialog.container.fadeIn('slow', function () {
                        dialog.data.slideDown('slow');
                    });
                });

EDIT Спасибо @Josiah Ruddell за помощь. Вот полный рабочий код для всех остальных с этой проблемой:

$('#NewDeliverable').click( function() 
        {
            $("#DeliverableFormContainer").modal({ 
                onOpen: function (dialog) 
                {
                    dialog.overlay.fadeIn('slow', function () 
                    {
                        dialog.data.hide();
                        dialog.container.fadeIn('slow', function () 
                        {
                            dialog.data.slideDown('slow');
                        });
                    });
                },
                onClose: function(dialog)
                {
                    dialog.data.find(':input').each(function () 
                    {
                        switch (this.type) 
                        {
                            case 'password':
                                $(this).val('');
                                break;
                            case 'select-multiple':
                            case 'select-one':
                                $(this).val(-1);
                                break;
                            case 'text':
                            case 'textarea':
                                $(this).val('');
                                break;
                            case 'checkbox':
                            case 'radio':
                                this.checked = false;
                        }
                    });

                    $.modal.close(); // must call this!

                }, persist: true
            });
        });


            }});
        });

Ответы [ 2 ]

5 голосов
/ 06 декабря 2010

Добавить обратный вызов onclose, который очищает модальные данные.Вы можете легко сделать это плагином jquery под названием clear form.

$("#DeliverableFormContainer").modal({
    persist: true, // don't clone the data
    onOpen: function (){ /* code */ },
    onClose: function(dialog){
        dialog.data.find(':input').each(function () {
            if(this.type.match(/password|text|textarea/))
                $(this).val('');
            else if(this.type.match(/select\-multiple|select\-one/))
                $(this).val('-1');
            else if(this.type.match(/checkbox|radio/))
                this.checked = false;
        });
        $.modal.close(); // must call this!
    }
});
0 голосов
/ 13 июня 2014

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

И если вы хотите удалить содержимоепросто нажмите «пустые данные и вызовите функцию при закрытии кнопки закрытия окна» ....

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

...