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