2009-07-24 47 views
1

我的表單有一個列表框,要求用戶的國家,但我只想填充列表框,通過AJAX調用,如果框不會已經不顯示用戶的國家。最初,列表框僅包含一個國家 - 從服務器上的IP到國家查找返回的國家。使用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 2009-07-24 12:45:00

回答

1

您將有選擇點擊事件沒有快樂的跨瀏覽器。只有變化事件被所有人支持,因此你需要重新思考。

一種選擇是使用顯示ip國家的標籤,如果用戶想要更改它,他們點擊標籤旁邊的按鈕,然後創建&填充選擇並替換標籤。

1

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

是什麼推遲的Ajax調用,直到你點擊對話框。嘗試將其更改爲簡單

$(function(){ 

或者只是刪除該行及其右大括號。

1

這將是更好的,你只是有這樣的事情:

縣:西班牙change

當他們點擊的變化,一個下拉所有國家箱更換國名。

+0

errr是不是我說的! – redsquare 2009-07-24 14:07:39

相關問題