Bootstrap Selectpicker不刷新

问题描述 投票:1回答:1

[当用户单击编辑图标时,选择器的内容将更新然后刷新。然后,选择器的值将更新,然后再次刷新,但是由于某种原因,它不会使用所选值进行更新。

当我在控制台中手动输入相同的代码时,一切正常。

$('#IncWidgetId').val(864)// the value used when breaking in console
$('#IncWidgetId').selectpicker('refresh')

我已确保用新的选项值更新选择器,并确认延迟的触发顺序正确。仔细检查一下,我也分离了.selectpicker('refresh')以确保在由于异步而未选中该选项之前,它没有尝试触发,但是它仍然没有使用所选值更新selectpicker。

$(document).on('click', '[id^=EditWidgetId-]', function () {
  var id = $(this).attr('id').split('-')[1];
  var mfg = $(this).data('mfg');
  var widgetid = $(this).data('widgetid ');
  var mfgSelect = $('input[name=mfg][value="' + mfg + '"]');
  mfgSelect.prop('checked', true);

  $.when(LoadWidgets(mfg)).then(function () {
      console.log('then function');
      $('#IncWidgetId').val(widgetid );
  }).done(function () {
      console.log('done function');
      $('#IncWidgetId').selectpicker('refresh');
  });

  $('#modalWidgetNew').modal('show');
});

function LoadWidgets(mfg) {
  var r = $.Deferred();
  console.log('before ajax');

  r.resolve($.ajax({
      url: '/Widgets/FilterWidgetsDropdown',
      type: 'GET',
      cache: false,
      data: { mfg: mfg },
      success: function (partial) {
          $('#IncWidgetDDArea').html(partial);
          $('#IncWidgetId').selectpicker('refresh')
      },
      error: function (x, e) {
          if (x.status == 0) {
              alert('You are offline!!\n Please Check Your Network.');
          } else if (x.status == 404) {
              alert('Requested URL not found.');
          } else if (x.status == 500) {
              alert('Internel Server Error.');
          } else if (e == 'parsererror') {
              alert('Error.\nParsing JSON Request failed.');
          } else if (e == 'timeout') {
              alert('Request Time out.');
          } else {
              alert('Unknow Error.\n' + x.responseText);
          }
      }
  })).done(function () {
      console.log('after ajax');
      return r.promise();
  });
}

我想念什么?

ajax promise jquery-deferred bootstrap-selectpicker
1个回答
0
投票

此插件的旧版本中存在这样的问题。尝试销毁它并再次初始化。像这样的东西:

$('#IncWidgetId').selectpicker('destroy');
$('#IncWidgetId').selectpicker();
© www.soinside.com 2019 - 2024. All rights reserved.