如何在selectize.js输入中动态设置selectize选项?

时间:2019-03-07 12:53:25

标签: javascript jquery selectize.js

我在表单内有一个表格,其中有一个selectize输入字段。我必须根据某些条件填充选定的值。数据以块的形式进入表中,前10条记录显示了正确的选定值,但是当我追加表中的下10条记录时,选定的值没有出现时,有一个show more按钮,每当表中有10条记录时就会追加一个

下面是我的代码:

此功能设置字段中的选项。我在这里使用offset来设置下一个追加行之后的所选值,这意味着offset值是第一次0到10秒钟,依此类推。

function initializeSelectizeChainage(options, offset) {

   var $select_chainage = $('.select-tools-chainage').selectize({
      maxItems: 1,
      valueField: 'id',
      labelField: 'chainage_name',
      searchField: 'chainage_name',
      options: options,
      highlight: true,
      openOnFocus: true,
      create: false,
      dropdownParent: 'body',
      /*selectOnTab:true,*/
      load: function(query, callback) {

         if (!query.length) return callback();
         $.ajax({
            url: '<?php echo SITEURL; ?>/Requistion/selectChainage',
            type: 'post',
            dataType: 'json',
            data: {
               name: query,
            },
            error: function() {
               callback();
            },
            success: function(res) {
               callback(res);
            }
         });
      }

   })

   var chainage_ids = arrayColumn(options, 'id');

   var rows = $(".table tbody tr");

   var valueToBeSet;
   for (var i = offset; i < rows.length; i++) {
      if ($.inArray($(rows[i]).find('.chainage').val(), chainage_ids) != -1) {
         valueToBeSet = options[$.inArray($(rows[i]).find('.chainage').val(), chainage_ids)];
         $select_chainage[i].selectize.setValue(valueToBeSet.id, true);

      }
   }
}

我在这里使用了arrayColumn()函数来获取每一行的chainage_id,以供我的逻辑设置正确的选项。功能下方:

function arrayColumn(array, columnName) {
   return array.map(function(value, index) {
      return value[columnName];
   })
}

现在,它第一次可以正常运行,但是从下次开始,它将不会在selectixe文本字段中设置默认值。 感谢您的帮助。

0 个答案:

没有答案