2009-07-24 4 views
1

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

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

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

$().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> 

+0

Что такое «действие по умолчанию». что именно происходит с этим кодом, что вы не хотите делать? – mkoryak

ответ

1

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

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

1

линия

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

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

$(function(){ 

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

1

Это было бы гораздо лучше, вы только что-то вроде:

Каунти: Испания change

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

+0

errr это не то, что я сказал! – redsquare

+0

классная идея, кто-то должен написать пример кода! – JasonDavis