Complete Guide to Dynamically Setting Selected Values in Bootstrap-Select Plugin

Nov 20, 2025 · Programming · 9 views · 7.8

Keywords: Bootstrap-Select | Dynamic Value Setting | Refresh Method

Abstract: This article provides an in-depth exploration of various methods for dynamically setting selected values when using the Bootstrap-Select plugin. By analyzing the differences between native jQuery val() method and plugin-specific methods, it explains why directly calling val() fails to update the UI display and offers complete solutions including refresh() method, selectpicker('val') method, and manual text updating. The article covers different approaches for both single and multiple selection scenarios, along with applicable use cases and best practices.

Problem Background and Core Challenges

When using the Bootstrap-Select plugin, developers often encounter a common issue: after setting the selected value via jQuery's val() method, although the underlying select element's value does change, the corresponding change is not visible in the user interface. This occurs because the Bootstrap-Select plugin works by hiding the native <select> element and generating a set of custom UI components for display instead.

In-depth Solution Analysis

Method 1: refresh() Method (Recommended)

This is the most commonly used and reliable solution. After directly setting the select element's value via jQuery, you need to explicitly call the plugin's refresh method to update the UI:

$('select[name=selValue]').val(1);
$('.selectpicker').selectpicker('refresh');

The advantages of this method include:

Method 2: selectpicker('val') Specialized Method

The Bootstrap-Select plugin provides a dedicated val method for setting selected values:

$('.selectpicker').selectpicker('val', 1);

For multiple selection scenarios, you can pass an array:

$('.selectpicker').selectpicker('val', [1, 3]);

This method essentially serves as syntactic sugar for the refresh method, automatically handling all UI update logic internally.

Method 3: Manual UI Text Update (Not Recommended)

In earlier versions or specific scenarios, some developers choose to manually update the UI text:

var text = $("select[name=selValue] option[value='1']").text();
$('.bootstrap-select .filter-option').text(text);
$('select[name=selValue]').val(1);

While this approach can achieve the goal, it has the following drawbacks:

Underlying Principle Analysis

The key to understanding why an additional call to the refresh method is necessary lies in comprehending the Bootstrap-Select plugin's working mechanism. During plugin initialization:

  1. The native <select> element is hidden
  2. Custom button and dropdown list UI components are created
  3. User interaction events are monitored to synchronize states

When the select element's value is modified directly via JavaScript, since this is not a user-triggered interaction event, the plugin cannot automatically detect the change, thus requiring manual notification to refresh the UI.

Best Practices and Considerations

Performance Optimization

In scenarios requiring frequent selected value updates, batch operations are recommended:

// Not recommended: Multiple refresh calls
$('select[name=selValue]').val(1);
$('.selectpicker').selectpicker('refresh');
$('select[name=selValue]').val(2);
$('.selectpicker').selectpicker('refresh');

// Recommended: Batch updates followed by a single refresh
$('select[name=selValue]').val(1);
// ...other operations
$('.selectpicker').selectpicker('refresh');

Error Handling

When setting non-existent values, the plugin fails silently. Adding validation is advised:

var targetValue = 5;
if ($('select[name=selValue] option[value='' + targetValue + '']').length > 0) {
    $('select[name=selValue]').val(targetValue);
    $('.selectpicker').selectpicker('refresh');
} else {
    console.warn('Target value does not exist: ' + targetValue);
}

Extended Application Scenarios

Dynamic Option Management

When dynamically adding or removing options, the refresh method is similarly required:

// Adding new options
$('select[name=selValue]').append('<option value="5">Val 5</option>');
$('.selectpicker').selectpicker('refresh');

// Removing options
$('select[name=selValue] option[value="1"]').remove();
$('.selectpicker').selectpicker('refresh');

Disabled/Enabled State Toggling

Changing the select element's disabled state also requires refresh:

// Disabling
$('select[name=selValue]').prop('disabled', true);
$('.selectpicker').selectpicker('refresh');

// Enabling
$('select[name=selValue]').prop('disabled', false);
$('.selectpicker').selectpicker('refresh');

Conclusion

When dynamically setting selected values in the Bootstrap-Select plugin, the key lies in understanding the plugin's working mechanism and correctly using the provided APIs. The refresh() method is the most versatile and reliable solution, while the selectpicker('val') method offers a more concise syntactic sugar alternative. Avoid directly manipulating the DOM elements generated by the plugin to ensure code stability and maintainability. By mastering these core concepts, developers can use the Bootstrap-Select plugin more flexibly and efficiently.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.