2013-06-12 64 views
1

我嘗試添加「選擇」選項時,用戶時區匹配的HTML選擇列表,通過jQuery追加在選擇列表中的「選擇」選項[時區選擇列表]

這裏是我的嘗試: - 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/

謝謝!

回答

0

你可以試試這個:http://jsfiddle.net/HYfQ5/2/

調用VAL()選擇將選擇具有該值的選項(如果有的話)。

我做了如下修改代碼:

var timez = $('#timezone'); 

,取而代之的for循環:

timez.val(response_text); 
+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/

+0

感謝兄弟,但我的頁面上有我的問題和你的代碼。我跟着http://jsfiddle.net/HYfQ5/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); 

});