选择.js destroy() 方法更改选择值

Selectize.js destroy() method changes select value

本文关键字:选择 方法 js destroy      更新时间:2023-09-26

我在我的项目中使用selectize.js。我需要做的是克隆表单的一部分(带有选定的元素)并将其附加到表单的末尾。

我决定在克隆之前销毁选定的元素,并在附加新的子表单初始化后再次选择。

以下是销毁选定元素的代码:

  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();
嗨,

塔玛拉,是的,我认为这是选择.js的错误。

我在选择中更改以下销毁方法.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);
    },

在这里你可以下载我的选择.js文件。