通过jquery [时区选择列表]在选择列表中附加“selected”选项

时间:2013-06-12 16:47:43

标签: javascript jquery selection

我正在尝试在匹配用户时区

时在html的选择列表中添加“selected”选项

以下是我的尝试: - http://jsfiddle.net/HYfQ5/

我不是Javascript / jquery学生:'(

HTML列表: -

<select name="timezone" id="timezone" required>
<option value="Africa/Abidjan" > Africa/Abidjan</option>
<option value="Africa/Accra" > Africa/Accra</option>
<option value="Africa/Addis_Ababa" > Africa/Addis_Ababa</option>
....... <!--Rest Item is in Above Link, Don't want to fill this place with 480 items -->
</select>

和我的Jquery修改: -

<script type="text/javascript" src="http://cdn.bitbucket.org/pellepim/jstimezonedetect/downloads/jstz-1.0.4.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
    var tz = jstz.determine();
    var timez = new Array();
    var timez = $('#timezone').val();

    response_text = 'No timezone found';

    if (typeof (tz) === 'undefined') {
        response_text = 'No timezone found';
    }
    else {
        response_text = tz.name();
    }
    for(var i=0;i<array.length;i++) {
        if (timez[i] === response_text) {
            $('#timezone').attr('selected') 
        }
    }
});
</script>

因此,每当它与用户时区匹配时,它应自动将“selected”值附加到选择列表。

Javascript时区,我正在使用: - http://pellepim.bitbucket.org/jstz/

谢谢!

3 个答案:

答案 0 :(得分:0)

你的功能中有一个小错误。使用此代码:

$("#timezone option").each(function(){
    if($(this).val() == response_text){
        $(this).attr('selected','selected');
    }
})

而不是:

for(var i=0;i<array.length;i++) {
    if (timez[i] === response_text) {
        $('#timezone').attr('selected') 
    }
}

此处的工作代码:http://jsfiddle.net/HYfQ5/1/

答案 1 :(得分:0)

您可以尝试:http://jsfiddle.net/HYfQ5/2/

选择上调用val()将选择具有该值的选项(如果有)。

我对代码进行了以下更改:

var timez = $('#timezone');

并将for循环替换为:

timez.val(response_text);  

答案 2 :(得分:0)

当您将.val()设置为选择列表时,它将选择具有该值的选项。

$(document).ready(function () {
var tz = jstz.determine();  
response_text = 'No timezone found';

if (typeof (tz) === 'undefined') {
    response_text = 'No timezone found';
}
else {
    response_text = tz.name();
}
$('#timezone').val(response_text);

});