Я использую Select2 в комбинации выпадающих меню. У меня есть одно меню для "Страны" и одно для "Государств/Провинций". В зависимости от страны, которая выбрана, раскрывающиеся диалоги "Штаты/Регионы" изменяются в контенте. Штаты/провинции вытягиваются с помощью ajax из базы данных, а затем отображаются следующим образом:
$display_output = '<select style="width:350px;" tabindex="2" name="state" id="state" data-placeholder="Choose a Country..."> ';
$display_output .= '<option value="" selected>Select a State</option> ';
while ($state_details = $this->fetch_array($sql_select_states))
{
$display_output .= '<option value="' . $state_details['id'] . '" ' . (($selected_value == $state_details['id']) ? 'selected' : ''). '>' . $state_details['s.name'] . '</option>';
}
$display_output .= '</select>';
До сих пор так хорошо. Все провинции меняются правильно, однако, когда они изначально загружаются, Select2 показывает "undefined" для выпадающего списка состояний, даже если я установил его как
data-placeholder="Choose a Country..."
Я предполагаю, что это может быть потому, что при загрузке выбрана страна "Соединенные Штаты", и она заполняет список состояний, но ни один из них не является по умолчанию или не выбран. Есть ли другой способ определить значение по умолчанию, чтобы он не показывал "undefined"?
И еще одна (но менее важная) проблема заключается в том, что когда кто-то выбирает "Соединенные Штаты", например, а затем выбирает "Аризону", если человек затем переходит в "Канаду" как страну, состояние "Аризоны" все еще остается, но при открытии раскрывающегося списка можно выбрать провинции Канады. Есть ли способ вернуть его к значению по умолчанию временно, когда кто-то выбирает другую страну, пока провинция не будет выбрана снова?
В настоящий момент мой код загрузки:
<script>
$(document).ready(function() { $("#state").select2(); });
</script>