0

http://geoplugin.netプラグインを使用してユーザーの場所を検出しています。状態のリストが<select>あり、jQueryを使用しています

$.getJSON(url, function(data){
    var state = data['geoplugin_region'];
    $('#states').val(state).attr('selected',true);
    var selectId = "#" + state ;
    var citySelect = selectId + "-cities";
    $(citySelect).show();
});

次に、私が作成した別のプラグインを使用して、その州の都市を含む正しい選択を表示します。WA-citiesこのための私のフォーマットは、ワシントン用の選択IDです。

それから私はこれを書いた:

var detectedCity = data['geoplugin_city'];
var city = detectedCity.replace(" ","-");
var selectedCity = city.toLowerCase();
var stateDash = state + "-";
var selectedValue = stateDash + selectedCity;
$(citySelect).val(selectedValue).attr('selected',true);

ただし、選択に含まれていない都市が検出されると、最初の値が返されます。その都市が選択されているかどうかを確認し、そこにある場合にのみ選択するにはどうすればよいですか。私の選択は次のように設定されています(ワシントンの場合):

<select name="cities" id="WA-cities" class="cities">
    <option value="" selected="selected" disabled>Select a City</option>
    <option value="WA-bellingham">Bellingham</option>
    <option value="WA-seattle">Seattle</option>
</select>

選択には実際にはもっと多くの都市があります。しかし、私はマーサーアイランドで検出されました。マーサーアイランドは選択されていません。JavaScriptは言う$(citySelect).val('WA-mercer-island).attr('selected',true);が、マーサーアイランドがないのでベリンガムのものを選ぶだけだ。私は何をすべきか?

4

1 に答える 1

0
$(citySelect).val(selectedValue).attr('selected',true);

これは、「value=selectedValueのオプションを設定する」という意味ではありません。それは間違っています。

これは正しい方法です、

$(citySelect + 'option[value="'+selectedValue+'"]').attr('selected',true);

これがjsFiddleの例です

于 2012-10-15T16:34:36.900 に答える