2015-01-12 2 views
2

Я использую selectize.js в своем проекте. То, что мне нужно сделать, это клонировать часть формы (с выделенными элементами) и присоединять ее к концу формы.Selectize.js destroy() метод changes select value

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

Вот код для уничтожения selectized элементов:

var selectElements = $(plusButtonElement).parents(".subform_wrapper").first().find("> .subform_fields_wrapper").find("select"); 
$.each(selectElements, function(index, element){ 
    console.log(element); 
    console.log($(element).val()); //Here we got value "10" 
    $(element)[0].selectize.destroy(); 
    console.log($(element).val()); //Here we got value "A6" 
}); 

Он работает - элементы превращаются в обычных выбирает, НО значение отдельных элементов меняются. Кто-нибудь сталкивался с этой проблемой?

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

self.$input 
      .html('') 
      .append(revertSettings.$children) 
      .removeAttr('tabindex') 
      .removeClass('selectized') 
      .attr({tabindex: revertSettings.tabindex}) 
      .show(); 

ответ

0

Привет Тамара да я думаю, что это ошибка в Selectize.js.

переделывает следующий способ уничтожить в selectize.js

destroy: function() { 
     var self = this; 
     var selectedValue = self.$input.val(); 
     var eventNS = self.eventNS; 
     var revertSettings = self.revertSettings; 

     self.trigger('destroy'); 
     self.off(); 
     self.$wrapper.remove(); 
     self.$dropdown.remove(); 

     self.$input 
      .html('') 
      .append(revertSettings.$children) 
      .removeAttr('tabindex') 
      .removeClass('selectized') 
      .attr({tabindex: revertSettings.tabindex}) 
      .show(); 

     self.$control_input.removeData('grow'); 
     self.$input.removeData('selectize'); 

     $(window).off(eventNS); 
     $(document).off(eventNS); 
     $(document.body).off(eventNS); 

     delete self.$input[0].selectize; 

     self.$input.val(selectedValue); 
    }, 

Здесь вы можете скачать мой selectize.js файл.