2014-01-16 6 views
0

Я новичок в 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

Так это PHP выводящий правильное значение? –

+1

Используйте php для автоматического выбора. – Madurai

ответ

0

Вместо того, повторяющий весь $aCountrycode объект, вы должны просто эхо пользователя код страны:

var countryID = <?php echo $countryCode; ?>; 

После этого вы можете использовать JQuery, чтобы выбрать соответствующую опцию:

$(document).ready(function() { 
    $('select#country').val(countryID); 
}); 

Вот JSFiddle demo проходящий в манекене countryID из 971 (Объединенные Арабские Эмираты).

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'] 
    ); 
} 
+0

Изменить '$ country_codes = [...' to '$ country_codes = array (...' –

+0

@Tomas Почему? Мои личные предпочтения - это синтаксис квадратных скобок, потому что он менее шумный, но они означают одно и то же. –

+0

Возможно, для JavaScript. Не для PHP. :) –

0

вы должны получить ссылку вашего списка:

var dropdown = document.getElementById('country'); 

ваш выпадающий список должен иметь только один идентификатор!

, то вы можете изменить свойство SelectedIndex:

dropdown.selectedIndex = countryID; 

;)

Смежные вопросы