Автоматическое заполнение списка названий стран с помощью jquery и события click окна - PullRequest
1 голос
/ 24 июля 2009

В моей форме есть поле со списком, в котором запрашивается страна пользователя, но я хочу заполнить список только с помощью вызова AJAX, если в этом поле еще не отображается страна пользователя. Изначально список содержит только одну страну - страну, возвращенную из поиска ip-to-country на сервере.

Похоже, действие по умолчанию для списка происходит перед действием моего события. Я хотел бы, чтобы сначала мои действия происходили так, чтобы, когда пользователь щелкает поле со списком, в этом поле предварительно заполнялись страны, извлеченные из сервера до его открытия.

Спасибо за любые предложения.

$().ready(function() {
  $('select#selCountry').one('click', function() {
    var selCountry = $('select#selCountry');
    var selected = $(selCountry).val();
    selCountry.html('<option value="">Loading...</option>');
    $.getJSON('/AjaxHelpers/CountryList', function(data) {
      if (data.length) {
        var options = '';
        for (var i = 0; i < data.length; i++) {
          var key = data[i].Key;
          var val = data[i].Value;
          options += '<option value="' + key + '"';
          if (key == selected) {
            options += ' selected="selected"';
          }
          options += '>' + val + '</option>';
        }
        selCountry.html(options);
      }
      else {
        selCountry.html('<option value="">Failed.</option>');
      }
    });
  });
});

HTML:

<div>
  <select id="selCountry" name="CountryCode"><option value="GB">United Kingdom</option>

Ответы [ 3 ]

1 голос
/ 24 июля 2009

строка

$('select#selCountry').one('click', function() {

- это то, что откладывает вызов Ajax до тех пор, пока вы не нажмете на поле. Попробуйте изменить его на

$(function(){

или просто удалить эту строку и закрывающую скобку.

1 голос
/ 24 июля 2009

Это было бы намного лучше, если бы у вас было что-то вроде:

Страна: Испания изменить

Когда они нажмут изменить, замените название страны на выпадающий списоквсех стран.

1 голос
/ 24 июля 2009

У вас не будет радости кросс-браузер с событием выбора клика. Только событие изменения поддерживается всеми, поэтому вам нужно переосмыслить.

Один из вариантов - использовать метку, которая показывает страну ip, и если пользователь хочет ее изменить, он нажимает кнопку рядом с меткой. который затем создает и заполняет выбор и заменяет метку.

...