Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы при повторном открытии модальные окна Все 
:(
    Опции темы
mstdmstd
Дата 7.10.2014, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



Всем привет,
Есть приложение php/codeigniter2/smarty/jquery/bootstrap и в нем модальные окна выполнены способом, что диву общего layout-а присваивается код возвращаемый из
вида smarty. И в общем все работает за исключением того, что при повторном запуске этого попапа не срабатывают jquery контролы выбора времени и даты.
 Примерно так :
Код

            $.ajax({
                url: $ajaxurl + "/editScheduleByType",
                type: "POST",
                dataType: "json",
                data: { {data} }
            }).done(function(data){
                if(data.error) {
                    err(data.error, "login");
                } else if(data.html) {
                    $("#popupwnd div.popupData").html(data.html); // заполяем див содержимым
                    $("#popupwnd").arcticmodal();
                } else {
                    // Error
                }
            }).error(function(data){
                    // Error
            });
            return false;
        }


В php-контроле :
Код

public function editScheduleByType() {
        $mode = $this->input->post("mode");
        ...
        $html = $this->load->view("business/client-edit-schedule-specified-days.tpl", [], TRUE);
        print json_encode(["html" => $html]);
    }


темплейт:
Код

application/views/business/client-edit-schedule-specified-days.tpl :

        <script>
            alert( "-1::")
            $(document).ready(function(){
                alert( "-122::")
                $(".time-select").timepicker({
                    timeFormat: 'HH:mm',
                    stepMinute: {$CompanyPolicy->app_calendar_division_mins}
                });
                alert( "-3::") // ПРИ КАЖДОМ ОТКРЫТИИ ПОПАПА ЭТИ АЛЕРТЫ ВЫСКАКИВАЮТ И В КОНСОЛЕ ОШИБКИ НЕТ

                $('#calendar').multiDatesPicker({
                    dateFormat: "yy-mm-dd"
                });
        ...
        <form action="" method="post" class="form-horizontal" id="scheduleForm">

            <div class="row">
                <div class="col-md-1"></div>

                <div class="col-md-4">
                    <p>{"Please select a specified days"|translate}:</p>

                    <div id="calendar"></div> <!-- При повторном запуcке этот каледарь не отображается-->
                </div>

                <div class="col-md-6 text-right">
                    <div class="text-left">
                        <p>{"Please fill your schedule"|translate}:</p>
                    </div>

                    <div class="form-group">
                        <label class="col-sm-2 control-label" for="sched_days_time_start">{"From"|translate}:</label>

                        <div class="col-sm-4"<!-- При повторном запуcке этот выбор времени не отображается-->> 
                            <input class="form-control time-select" name="sched_days_time_start" id="sched_days_time_start" value="{$Schedule->sched_days_time_start|date_format:"%H:%M"}" />
                        </div>



И наконец в общем темплейте который используется всеми страницами  
Код

        <div style="display: none;">
            <div class="box-modal" id="popupwnd" > 

                <div class="alert alert-warning fade in fade" role="alert" id="div-box-modal-alert" style="display: none;">
                    <strong>
                        Message!
                    </strong>
                    <span id="span-box-modal-alert"></span>
                </div>

                <div class="box-modal_close arcticmodal-close">{"close"|translate}</div>

                <div class="popupData" > <!-- Сюда будет записано модальное окно -->

                </div>
            </div>
        </div>


Как можно побороть эту проблему ?

PM MAIL   Вверх
mstdmstd
Дата 12.10.2014, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



Проблема по-преженему актуальна,
Я выложил на сайт : открываем http://zenbookin.p.zettich.com/,

Справа логин по [email protected] 111111
Переходим на http://zenbookin.p.zettich.com/business/classes/main
Справа закладка Schedules и кликаем на ссылке "edit" одного из "Weekly"
Я выводил алерты для наглядности и html-код самого окна которое загружается в див

Там выскакивает алерт с кодом открываемого окна - я переделал что код режется на 2 куска - так как он большой и в один алерт не помещается

На нем две пары полей Beetween/and и From/to 
Кликая мышкой на них выпадают виджеты для выбор даты и времени
Можно сохранить данные или выйти по esc но при повторном открытии этого окна эти виджеты не работают

Код в шаблоне смарти имеет вид :
Код

        <script>
            {if $CurrentUser->Company->businessname eq "TEST1"}
            alert( "-1::")
            {/if}

            $(document).ready(function(){
                {if $CurrentUser->Company->businessname eq "TEST1"}
                alert( "-2::")
                {/if}
                $(".time-select").timepicker({
                    timeFormat: 'HH:mm',
                    stepMinute: {$CompanyPolicy->app_calendar_division_mins}
                });
                {if $CurrentUser->Company->businessname eq "TEST1"}
                alert( "-3::")
                {/if}

                $(".dateselect").datepicker({
                    dateFormat: "yy-mm-dd"
                });
                {if $CurrentUser->Company->businessname eq "TEST1"}
                alert( "-4::")
                {/if}
            })
        </script>



Я пытался использовать id инпутов вместо обращения к классу - не помогло

Также я пытался перед выполнением команд инициализации плагинов чистить событие onclick :
Код

$('#sched_days_time_start').removeAttr('onclick').submit(function() {
  alert("My onclick function justexecuted!"); // Этот alert НЕ выскакивает
});
$('#sched_days_time_end').removeAttr('onclick').submit(function() {
  alert("My onclick function justexecuted!");  // Этот alert НЕ выскакивает
); 

- также не помогло. Мысль в том, что при повторном открытии попапа надо перед инициализацией плагинов  каким-то образом чистить все,
что было в памяти с прошлого раза. Как это лучше сделать?

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

<div class="box-modal_close arcticmodal-close">close</div>


Я не знаток таких тонкостей JS и bootstrap-а . Как это лучше сделать?


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.2394 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.