проблемы при повторном открытии модальные окна

mstdmstd

Новичок
Всем привет,
Есть приложение 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>

И наконец в общем темплейте который используется всеми страницами
HTML:
<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>
Как можно побороть эту проблему ?
 
Последнее редактирование:

mstdmstd

Новичок
и писать без ошибок...
универсальный совет ;)
я и сижу отлаживаю - систему эту придумал не я - я пользовал диалоги jquery - там таких проблем не было, но были другие...

как средствами JS очистить инпут от всех привязанных к нему ранее событий? то есвть очистить с инпута все что осталось от предыдущего использования ?
 

С.

Продвинутый новичок
Не надо придумывать глупости. Надо найти ошибку и исправить ее.
 

mstdmstd

Новичок
Так в том то и дело что ошибку я не вижу и в консоле ошибок нет...
 

С.

Продвинутый новичок
С чего ты взял, что все ошибки отображаютс в консоли? Есть ошибки логические, при которых с синтаксисом все в порядке. Но искать такие ошибки -- твоя прямая обязанность, как программиста. Ты думаешь, кто-то воссоздаст твою ситуацию и будет искать ошибку вместо тебя? С какой стати? Никакого академического интереса этот случай не представляет. Никакой типичности ошибки нет (это на случай "Может у кого уже было такое?"), просто допущен ляп, который надо найти.
 
Последнее редактирование:
  • Like
Реакции: vld

vld

Новичок
скинь урл, тебя я проклинаю! пока код светится не будет и отступы ты не поправишь проклятье моё не спадет

 

mstdmstd

Новичок
Отступы прописал и даю доступ:
Открываем http://zenbookin.p.zettich.com/,

Справа логин по [email protected] 111111
Переходим на http://zenbookin.p.zettich.com/business/classes/main
Справа закладка Schedules и кликаем на ссылке "edit" одного из "Weekly"
Я выводил алерты для наглядности и html-код самого окна которое загружается в див
алерт выводит не весь код но нужные строки с
alert( "-1::")
помещаются...
На нем две пары полей 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>
 

mstdmstd

Новичок
Нет идей из-за чего проблема?

Я пытался использовать 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-а . Как это лучше сделать?

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