我是Javascript和网站开发的新手
对于我的网站,我有一个有限国家/地区的下拉列表,我想在页面加载时预先选择国家/地区使用IP地址或任何其他方法,如果IP地址位置与它应设置的国家/地区列表不匹配到默认国家。
到目前为止在HTML中我有类似的东西:
<select id="country" name="country" id ="countrycode" tabindex="1">
<optgroup label="Choose your country">
<option value="44" id= 'GBR'>United Kingdom</option>
<option value="31" id= 'NLD'>Netherlands</option>
<option value="91" id= 'IND'>INDIA</option>
<option value="971" id= 'UAE'>United Arab Emirates</option>
<option value="420" id= 'CZE'>Czech Republic</option>
<option value="07" id= 'RUS'>Russia</option>
<option value="358" id= 'FIN'>Finland</option>
<option value="33" id= 'FRA'>France</option>
<option value="1" id= 'USA' >USA</option>
</optgroup>
</select>
和PHP,
if(isset($_GET['country_test'])) {
$countryCode = $_GET['country_test'];
}
else {
$firstIp = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0];
$countryCode = geoip_country_code3_by_name($firstIp);
}
(国家/地区代码,我在url中通过国家/地区测试或从geoIP函数获取)
我将国家/地区代码定义为数组
$aCountrycode = array(
'GBR' => 44,
'INR' => 91,
'NLD' => 31,
'NOR' => 47,
'POL' => 48,
'CZE' => 420,
'RUS' => 07,
'FIN' => 358,
'FRA' => 33,
'USA' => 1,
'AUT' => 43,
);
并将php变量传递给javascript为
<script>
var countryID = <?php echo json_encode($aCountrycode); ?>;
</script>
现在我有点迷惑javascript继续,任何人都可以帮助我使用其余的代码, 这将是真正有用的,代码听起来是否正确??
答案 0 :(得分:1)
如果你想预先选择一个项目,你实际上并不需要JavaScript,你可以这样做:
$country_codes = [
['abbreviation' => 'GBR', 'number' => 44, 'name' => 'United Kingdom'],
['abbreviation' => 'INR', 'number' => 91, 'name' => 'India'],
...
];
foreach($country_codes as $country) {
echo sprintf('<option value="%d" id="%s" %s>%s</option>',
$country['number'],
$country['abbreviation'],
$selected_country_id === $country['number'] ? ' selected="selected"' : '',
$country['name']
);
}
答案 1 :(得分:0)
您应该只回显用户的国家/地区代码,而不是回显整个$aCountrycode
对象:
var countryID = <?php echo $countryCode; ?>;
之后,您可以使用jQuery选择相关选项:
$(document).ready(function() {
$('select#country').val(countryID);
});
这是JSFiddle demo传递了971(阿拉伯联合酋长国)的虚拟countryID
。
答案 2 :(得分:0)
您必须获得下拉列表的参考:
var dropdown = document.getElementById('country');
您的下拉列表应该只有一个ID!
然后你可以改变selectedIndex属性:
dropdown.selectedIndex = countryID;
)