ドロップダウン メニューの組み合わせで 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 は州のドロップダウンに「未定義」と表示されます。
data-placeholder="Choose a Country..."
ロード時に選択された国が「米国」であり、州のリストが表示されますが、デフォルトまたは選択されていないためである可能性があると思います。「未定義」と表示されないようにデフォルト値を定義する他の方法はありますか?
もう 1 つの (しかしそれほど重要ではない) 問題は、たとえば、誰かが「米国」を選択してから「アリゾナ」を選択した場合、その人が国として「カナダ」に変更した場合、「アリゾナ」の州はそのままであるということです。ドロップダウンを開くと、カナダの州が選択可能です。誰かが別の国を選択したときに、州が再度選択されるまで、一時的にデフォルト値に戻す方法はありますか?
私の読み込みコードは現在、次のとおりです。
<script>
$(document).ready(function() { $("#state").select2(); });
</script>