JSONを使用してドロップダウンを実現しようとしています。 3つのドロップダウンが必要です。最初に国のドロップダウンを入力します(例:米国、英国など)。ここで、ユーザーがUSAを選択すると、jQuery .change()を使用してドロップダウンにデータを入力する必要があることが示されます。ここでも、ユーザーが州を選択すると、都市のドロップダウンが表示される必要があります。
どうすればこれを達成できますか?私のJSONファイルは少し大きいので、ここに追加して、国のドロップダウンを設定しようとしましたが、州と都市のドロップダウンを生成できません...
$.each(myJson.country, function (index, value) {
$("#country").append('<option value="'+value.id+'">'+value.name+'</option>');});
上記のコードは、国のみを入力するのに役立ちますが、州や都市などの他のコードは入力できません。どんな助けでも大歓迎です。
前もって感謝します。
他の人が言ったように、国と州の選択入力のonchange
イベントを処理し、ロジックを適用する必要があります。国を選択するときに州を動的に取得するためにここでいじりました、残りを自分でコーディングできるかもしれません- Fiddle
他のドロップダウン値に基づいてこのドロップダウンを生成することも表示される場合があります
次のような3つのテキストボックスの.change()
イベントをカスケードする必要があります。
以下は、イベントハンドラーをチェーンする方法を示すドラフトアウトラインです。ドロップダウンは非同期的に入力されるため、依存するドロップダウンはAJAXリクエストの前に空になります。
$("#country").change(function () {
$("#state, #city").find("option:gt(0)").remove();
$("#state").find("option:first").text("Loading...");
$.getJSON("/get/states", {
country_id: $(this).val()
}, function (json) {
$("#state").find("option:first").text("");
for (var i = 0; i < json.length; i++) {
$("<option/>").attr("value", json[i].id).text(json[i].name).appendTo($("#state"));
}
});
});
$("#state").change(function () {
$("#city").find("option:gt(0)").remove();
$("#city").find("option:first").text("Loading...");
$.getJSON("/get/cities", {
state_id: $(this).val()
}, function (json) {
$("#city").find("option:first").text("");
for (var i = 0; i < json.length; i++) {
$("<option/>").attr("value", json[i].id).text(json[i].name).appendTo($("#city"));
}
});
});
コードでは、選択を行うときにすべてのハンドラーを記述し、入力パラメーターに従ってJSONオブジェクトを照会し、国を作成したように、さらにドロップダウンを入力する必要があります。その場合、JSONのクライアント側のすべてのデータがあります。通常、この種のデータはデータベースにあるため、サーバーから取得する必要があります。
JQuery Autocomplete Widget で作成できます。
最初の選択では、国のオートコンプリートのみを有効にします。
ユーザーが選択を行った後、JavaScriptで州のソースを設定します(Countryパラメーターをメソッドに渡し、ユーザーが入力するときに、countryパラメーターに従ってサーバーから値を入力します)。
ユーザーが2.選択を行ったら、3番目のオートコンプリートを有効にし、入力「状態」パラメーターを設定し、市のオートコンプリートのパラメーターに従って値を入力します。
「前の」ドロップダウンの値を取得し、他のドロップダウンを除外する必要があります。基本的に、2つのオプションがあります。