使用GeoPlugin设置所选选项

时间:2012-10-14 22:24:20

标签: javascript jquery json html-select

我正在使用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();
});

然后它使用我写的另一个插件来显示具有该状态城市的正确选择。我的格式是华盛顿的选择ID为WA-cities

然后我写了这个:

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>

选择中实际上有更多城市。但是我在Mercer Island被发现了,这不是选择。 JavaScript说$(citySelect).val('WA-mercer-island).attr('selected',true);但只选择了Bellingham,因为没有Mercer Island。我该怎么办?

1 个答案:

答案 0 :(得分:0)

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

这并不意味着“设置选项值= selectedValue”。这是错的。

这是正确的方法,

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

here is a jsFiddle Example