2015-04-09 3 views
1

Я звоню форму в всплывающем окне с помощью bootboxUncaught Error: не может вызывать методы до инициализации;

bootbox.alert(myform, function() { 
    }).find("div.modal-dialog").addClass("largeWidth"); 

в форме есть аа палитра Collor подборщика (эвол ColorPicker)

$(document).ready(function() { 
    $("#cd_bundle_entitiesbundle_call_Color").colorpicker(); 
}); 

В первый раз форма всплывающее окно открывает палитру для цвета выбрать дисплеи в порядке, но только за один раз. После этого, если я закрою всплывающее окно и откройте его снова, когда нажимаем для палитры выбора цвета, получив ошибку
Ошибка при отсутствии: не удается вызвать методы на colorpicker до инициализации; пытался вызвать метод

Чтение подобные вопросы «hidePalette» Я думаю, что я ве уничтожить bootbox всплывающее окно, так в обратного вызова bootbox пытался $ (это) .empty или $ (это) .remove(), но не работали

Это моя форма в HTML-файл с некоторыми JS

<div class="col-lg-6"> 

     {{ form_start(form, {'action': path('calls_edit_exec'),'attr': {'class': 'callform'} }) }} 
     <fieldset> 

      {{ form_errors(form) }} 
      <div class="row"> 
       <label class="col-md-3">Requestor</label> 
       <label class="input col-md-5">{{ form_widget(form.Requestor) }}</label> 
       <span id="inforeq" class="inforeq fade info alert-success" ></span> 

      </div> 

      <div class="row"> 
       <label class="col-md-3">CallStatus</label> 
       <label class="input col-md-5">{{ form_widget(form.CallStatus) }}</label> 
      </div> 

      <div class="row"> 
       <label class="col-md-3">Color</label> 
       <label class="input col-md-5">{{ form_widget(form.Color) }}</label> 
      </div> 

      <span class="fade"> 
       <input id="mycolor" class="colorPicker evo-cp0" /> 
      </span> 

      <div class="row"> 
       <label class="col-md-3">AssignedTo</label> 
       <label class="input col-md-5">{{ form_widget(form.AssignedTo) }}</label> 
       <span id="infouser" class="infouser fade info alert-success" ></span> 
      </div> 

      <div class="row"> 
       <label class="col-md-3">Category</label> 
       <label class="input col-md-5">{{ form_widget(form.CallCategory) }}</label> 
       <span id="infouser" class="infouser fade info alert-success" ></span> 
      </div> 

      <div class="row col-lg-12"> 
       <div class="row"> 
        <label class="col-md-3">Call Problem</label> 
       </div> 
       <div class="row"> 
        <label class=" textarea col-md-12">{{ form_widget(form.CallProblem) }}</label> 
       </div> 
       <div class="row"> 
        <label class="col-md-3">Call Solution</label> 
       </div> 
       <div class="row" > 
        <label class="textarea col-md-12">{{ form_widget(form.CallSolution) }}</label> 
       </div> 
       <div class=" form-control"> 
        <input class="form" type="checkbox" name="createready" id="createready">Make this Ready Call/Solution<br> 
       </div> 
      </div> 

     </fieldset> 
     {{ form_end(form) }} 
    </div> 
<script> 
     $(document).ready(function() { $("#cd_bundle_entitiesbundle_call_Color").colorpicker(); 
    }); </script> 

с нажмите форму возвращается из АЯКСА вызова

$.ajax({ 
           url: url, 
           success: function (data) { 
            bootbox.alert(data, function() { 

             // $this.empty(); 
            }).find("div.modal-dialog").addClass("largeWidth"); 

           } 
          }); 

Чтобы получить форму в всплывающих им USI нг bootbox

+1

Похоже, что вы можете удалять и воссоздавать динамический динамик DIV динамически. Каждый раз, когда вы его воссоздаете, вам нужно вызвать '.colorpicker()' для нового элемента. Возможно, вместо того, чтобы удалять и воссоздавать его, вы должны просто скрыть и показать его. – Barmar

+0

В первый раз, когда всплывающее окно с формой выдает colorpicker initialize $ (document) .ready (function() { $ ("# cd_bundle_entitiesbundle_call_Color"). Colorpicker(); }); –

+0

Я понимаю это. Вот почему он работает в первый раз. Но вы должны уничтожить его, а затем попытаться вызвать 'hidePalette' на нем после этого, и это приведет к ошибке. Вы должны повторно инициализировать новый colorpicker. – Barmar

ответ

1

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

$.ajax({ 
    url: url, 
    success: function (data) { 
     bootbox.alert(data, function() { 
      // $this.empty(); 
     }).find("div.modal-dialog").addClass("largeWidth"); 
    } 
}); 

Если да, то я хотел бы использовать метод show.bs.modal как точки, где вы вызвать ColorPicker:

$.ajax({ 
    url: url, 
    success: function (data) { 
     bootbox.alert({ 
      message: data, 
      callback: function() { 
       // do something when dismissing the alert 
      }, 
      className: 'largeWidth' 
     }) 
     .on('show.bs.modal', function(){ 
      $("#cd_bundle_entitiesbundle_call_Color").colorpicker(); 
     }); 

    } 
}); 

Я также подстроил ваш пример, чтобы использовать объект опций, как показано на рисунке documentation.

Стоит отметить, что есть size options для Bootstrap модальностей как из 3.1.0, который можно применять, как вы были с вашим largeWidth класса, или вы можете использовать эквивалентную size вариант, как указано в документации Bootbox I, связанных с ранее ,

+0

T thxx для ответа, с .on show.bs.modal экземпляр colopicker инициализируется каждый раз, когда форма всплывает, но все равно получает ту же ошибку. Игнорирование colorpicker в любом случае каждый раз, так как готовый документ func запускает всплывающие окна evrytime. Я думаю, что имеет отношение к colorpicker, создает динамические div-идентификаторы для цветов pallete, и есть некоторая ссылка на них, но во второй раз в форме появляются другие div-идентификаторы. I попытался $ ("# id) .colorpicker (destory); уничтожить все html после закрытия модального, но все еще получая ошибку –

Смежные вопросы

 Смежные вопросы