2010-02-04 83 views
0

我有一个表单来添加食谱,用户可以在同一表单中添加多个食谱成分。用户添加的每种成分都是通过ajax调用完成的,这样我就不必显示选择的成分盒。当用户的用户选择的所选择的成分的ID被存储在一个隐藏的输入当通过ajax调用添加选项时从选择框中选择一个值

<%= builder.hidden_field :ingredient_id %></div> 

的成分,当用户从列表中选择一个成分,触发一个AJAX调用填充另一个选择框,其显示的所有根据配料提供大小。当我添加新的食谱时,这个设置完美地工作。

我有一个问题,当我打开在编辑模式下现有配方...

我有以下的HTML

<%= builder.hidden_field :ingredient_id %> 
<%= builder.select(:serving_size_id, '') %> 

jQuery代码

jQuery.fn.bindServingSizes = function(ingredientid) { 
    var $this = $(this); 

    $.getJSON("/serving_sizes?ingredientid=" + ingredientid, function(j) { 

     var options = "<option value=''>Please select a serving size</option>"; 
    for (var i=0; i < j.length; i++) 
     options += '<option value="' + j[i].serving_size.id + '">' + j[i].serving_size.name + '</option>'; 

     $this.html(options); 
    }); 
    }; 

我有一个Ajax调用它在页面加载时运行,它读取隐藏输入中的值并获取服务大小并将其作为选项添加到选择框中。 我的问题:如何在选择框中选择正确的选项?我有“serving_size_id”列中的数据,但我不知道如何获取它的值,所以我可以按值设置正确的选定项目。

我希望我的解释清楚。

回答

1

我不是jQuery专家,但从您的示例看,我看到您只是创建HTML来提供可用的选项。

因此,您可以将selected="selected"属性添加到与值serving_size_id对应的选项。使用jQuery是可以做到用从serving_size_id 获取价值:

var serving_size = $("#serving_size_id").val(); 

此值面包车中使用的for循环“发现”所选择的选项。

+0

我很抱歉,因为我想我可能把你带走了错误的路。我的问题是,如何从“serving_size_id”列中获取值。如果我能以某种方式获得该值,我可以使用jQuery来设置选定的索引。 – iJK 2010-02-04 14:17:34

+0

没问题我修改了一下我的答案。希望现在更清楚? – Veger 2010-02-04 18:03:53

0

使用jQuery,您可以设置选择<option>通过:

$(combo).val('selectedValue'); // * 

文档:http://api.jquery.com/val/#val2

*你的代码并没有让我上示例代码使用真实名称和值

相关问题