Jquery - настройка формы select-field «selected» значение работает только после обновления - PullRequest
0 голосов
/ 16 января 2011

Я хочу использовать поле выбора формы для пользователей, чтобы выбрать страну своего проживания, которая показывает страну на основе IP-адреса в качестве значения по умолчанию (плюс IP-адрес рядом с ним);

Информация о местоположении (ipinfodb.com) работает. Я передаю "страну" и "ip" в функцию, которая должна изменить select-field и ip adress

Проблема: IP-адрес работает, но поле выбора обновляется только после нажатия кнопки «Обновить».

Может кто-нибудь сказать мне, почему?

Вот код:
HTML

<select name="setup_changeCountry" id="setup_changeCountry">
     <option value="AL-Albania">Albanien</option>
     <option value="AD-Andorra">Andorra</option>
     <option value="AM-Armenia">Armenien</option>
     <option value="AU-Australia">Australien</option>
     ...
</select>
<div class="setup_IPInfo">
    <span>Your IP</span>
    <span class="ipAdress"> -- ip --</span>
</div>

Javascript / Jquery

function morph(country,ip) >> passed from function, called on DOMContentLoaded
{
var ipAdress = ip;
$('.ipAdress').text(ipAdress);

var countryForm = country; 
$('#setup_changeCountry  option').each(function()
    {
    if ($(this).val().substr(0,2) == countryForm)
        {
        $(this).attr('selected', "true");
        }
    });
} 

Спасибо за любые подсказки о том, как это исправить.

Частое

Ответы [ 3 ]

0 голосов
/ 16 января 2011

Вы можете значительно упростить свой цикл и позволить jQuery выполнить работу:

$("#setup_changeCountry option[value$='" + country + "']").attr('selected', true);

убедитесь, что:

  • регистр совпадает (ваша страна также должна начинаться с заглавной буквыписьмо)
  • вы выполняете этот код после загрузки DOM, в противном случае вы можете попытаться выбрать вариант, который еще не существует
0 голосов
/ 05 июня 2014

вы должны использовать:

 $(document).ready(name_of_function);

таким образом вы можете запустить функцию выбора страны.Вы можете использовать эту функцию для этого:

function morph(country,ip){
    var ipAdress = ip;
    $('.ipAdress').text(ipAdress);
    var countryForm = country; 
    $("#setup_changeCountry option[value$='" + country + "']").attr('selected', true);
}
0 голосов
/ 16 января 2011

Выбрано = "выбрано", не выбрано = "истина", поэтому:

$(this).attr('selected', 'selected');

(Также вы можете пропустить var ipAdress и просто передать ip вследующая строка)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...