从下拉列表中自动选择国家/地区

时间:2014-01-16 12:39:20

标签: javascript php jquery html ajax

我是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继续,任何人都可以帮助我使用其余的代码, 这将是真正有用的,代码听起来是否正确??

3 个答案:

答案 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;