[当用户单击编辑图标时,选择器的内容将更新然后刷新。然后,选择器的值将更新,然后再次刷新,但是由于某种原因,它不会使用所选值进行更新。
当我在控制台中手动输入相同的代码时,一切正常。
$('#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();
});
}
我想念什么?
此插件的旧版本中存在这样的问题。尝试销毁它并再次初始化。像这样的东西:
$('#IncWidgetId').selectpicker('destroy');
$('#IncWidgetId').selectpicker();