2012-02-27 77 views
0

好日子,jQuery的下拉列表填充使用JSON數據

我在網上看了看,閱讀了有關使用JSON和jQuery的下拉列表中的職位。但是,我似乎無法讓我的語法正確。當頁面加載時,我希望城鎮下拉列表包含所有城鎮。一旦用戶選擇一個社區,那麼只有該城鎮的社區應該顯示。

任何幫助表示讚賞。請點擊這裏查看我的代碼http://jsfiddle.net/latoyale/XgxCP/1/

+0

要綁定到'change'事件,而不是'點擊事件。 – meagar 2012-02-27 18:04:02

回答

0

我做了一個工作叉:http://jsfiddle.net/ccync/

對於後人,JavaScript代碼低於:

// JSON data start 

var data = [ 
    [ 
       {optionValue: 0,url: 'Choose Town',community: 'Choose Town'}, 
       {optionValue: 1,url: '/dutchess/amenia',community: 'Amenia'}, 
       {optionValue: 2,url: '/dutchess/arlington',community: 'Arlington'}, 
       {optionValue: 3,url: '/dutchess/barrytown',community: 'Barrytown'} 
    ], 


      [ {optionValue: 0,url: 'Choose Town',community: 'Choose Town'}, 
       {optionValue: 32,url: '/orange/Campbell-hall',community: 'Campbell Hall'}, 
       {optionValue: 33,url: '/orange/central-valley',community: 'Central Valley'}, 
       {optionValue: 34,url: '/orange/chester',community: 'Chester'}, 
    ] 

      ]; 

// JSON data end 


$(function() { 

    $('#page-changer')[0].reset(); // resets form onload 

    var $county = $('#county'); 
    var $township = $('#township'); 
    function updateTownshipOptions(){ 
     var selected = $county.val(); 
     if (selected) { 
      options = []; 
      var selected_data = data[$county.val()-1]; 
      for (var i=0; i<selected_data.length; i++) { 
       options.push('<option value="'+selected_data[i].optionValue+'">'+selected_data[i].community+'</option>'); 
      } 
      $township.html(options.join('')); 
     } 
    }  
    updateTownshipOptions(); 
    $county.change(updateTownshipOptions); 

}); 
+0

謝謝,這絕對是我的原始代碼更復雜。如果城鎮下降,那麼所有的城鎮都無法承載。我需要所有「社區」來顯示用戶是否首先點擊城鎮。一旦選定了該縣下拉菜單,該列表應該只顯示該縣的城鎮。 – latoyale 2012-02-27 18:22:13

+0

問題在於你設置'數據'的方式。循環遍歷每個選項集合是不實際的,過濾出「選擇城鎮」選項並將它們全部放入一個列表中。通常的做法是,您的原始表單包含所有可能的選項。然後,選擇一個縣時,會觸發一個AJAX請求,以便爲所選擇的選項獲取選項。 – 2012-02-27 18:31:29

+0

我可以修改我的數據以適應此功能。一旦我這樣做了,我想知道檢索社區數據的語法是什麼。 – latoyale 2012-02-27 18:36:53