2012-10-14 68 views
0

我使用http://geoplugin.net插件來檢測用戶的位置。我有一個<select>與狀態的列表,並使用jQuery使用GeoPlugin設置選定選項

$.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島被發現,這不在選擇。 JavaScript說$(citySelect).val('WA-mercer-island).attr('selected',true);,但只是選擇了Bellingham,因爲沒有Mercer島。我該怎麼辦?

回答

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

這並不意味着「設置選項哪個值= selectedValue」。這是不對的。

這是正確的方式,

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

here is a jsFiddle Example