【问题标题】:javascript to dynamically populate a dropdown list boxjavascript动态填充下拉列表框
【发布时间】:2011-12-09 20:14:11
【问题描述】:

我有一个 ruby​​ on rails 应用程序。我有 2 个下拉框。我必须根据第一个下拉框的选择填充第二个下拉框。

html代码是

-Releases = Release.all
  %table.grid.full
    %tr      
      %td.grid.full_panels{:style => "width: 40%"}
        Release:
      %td.grid.full_panels{:style => "width: 40%"}
        = select_tag "releases",options_from_collection_for_select(releases,"id","name",params[:releases]),:include_blank=>true
      %td.grid.full_panels{:style => "width: 40%"}
        Cycle:
      %td.grid.full_panels{:style => "width: 40%"}

现在我需要从发布中填充周期下拉列表。

请帮我解决这个问题。

【问题讨论】:

标签: jquery ruby-on-rails-3


【解决方案1】:

基本上,您应该添加一个事件处理程序,当第一个下拉列表被更改时将触发该事件处理程序,该事件处理程序将根据第一个下拉列表的选定选项填充第二个:

$('select#first').change(function(e){
    var newOptions = getNewOptions($(this).val());
    $('select#second').html('');   // clear the existing options
    $.each(newOptions,function(i,o){
        $('<option>' + o + '</option>').appendTo('select#second');
    });            
});

function getNewOptions(val){
    if (val == 1)
        return ['a','b','c'];
    if(val == 2)
        return [1,2,3,4];
    return ['a1','a2','a3'];
}

当然,您的 html 标记类似于:

<select id="first">
    <option>1</option>
    <option>2</option>
    <option>3</option>
</select>

<select id="second">
</select>

这是一个工作演示:

http://jsfiddle.net/gion_13/Udf5N/

如果要向服务器查询新选项列表,在更改事件处理程序中,您应该向脚本发出 ajax 请求,该脚本评估第一个选择框的当前值并返回选项列表第二个。在这个 ajax 请求回调中,您根据响应更新实际的 html:

$('select#first').change(function(e){
    $.getJson('script_name',{value : $(this).val()},function(result){
        $('select#second').html('');   // clear the existing options
        $.each(result,function(i,o){
            $("<option>" + o + "</option>").appendTo("select#second");
        }); 
    });            
});

【讨论】:

  • 非常感谢 gion。在这里我想用 sql 查询填充第二个下拉列表。对应的 ruby​​ 查询是 selected_release=Release.find(params[:id])cycles=selected_release.cycles
  • 能否请你帮我一个对应于查询 selected_release=Release.find(params[:id])cycles=selected_release.cycles 的 jquery
  • 知道如何在 jquery 中使用 sql 查询。我的 sql 查询是“从 release_id=”的周期中选择名称
  • 您必须使用服务器端脚本来处理数据库数据传输(例如 ruby​​ 或 php 脚本)并将结果返回给 ajax 回调。在我的示例中,script_name 指的是该脚本的路径(例如:'script/get_options.php')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2020-06-26
  • 2015-12-11
  • 2019-06-06
  • 2014-03-01
  • 1970-01-01
相关资源
最近更新 更多