Javascript 在rails中动态选择项
我试图在这里使用rails和jquery进行动态选择。代码如下Javascript 在rails中动态选择项,javascript,jquery,ruby-on-rails,ruby-on-rails-3,Javascript,Jquery,Ruby On Rails,Ruby On Rails 3,我试图在这里使用rails和jquery进行动态选择。代码如下 <div class = "line_items"> <%- calc = Hash[Item.all.map{|p| [p.id, p.quantity]}].to_json %> <div class = "item"><%= f.collection_select :item_id,Item.all,:id,:title, :prompt => "Select a Ite
<div class = "line_items">
<%- calc = Hash[Item.all.map{|p| [p.id, p.quantity]}].to_json %>
<div class = "item"><%= f.collection_select :item_id,Item.all,:id,:title, :prompt => "Select a Item", input_html: {data:{calc: calc} %></div>
<div class ="quantity"> <%= f.text_field :quantity %></div>
/*rest of code*/
</div>
jQuery(document).ready(function(){
jQuery('.item').bind('change',function() {
var selectElement = jQuery(this);
var itemSelected = jQuery('.item:selected').val();
var wrapperDivElement = selectElement.parent(".line_items");
var quantity= eval(selectElement.data("calc"))[itemSelected];
jQuery(".quantity", wrapperDivElement).val(quantity);
});
});
当我更改项目时,我得到以下错误
eval(selectElement.data(“calc”))[itemSelected]在firebug中未定义。有人能指出我哪里出了问题吗?还有什么更好的方法来获取数量。我觉得我的方法很粗糙。任何指导都会有帮助。提前谢谢。我想你把索引引用和ID引用弄混了。我不是Javascript向导,但是你用一个列表来填充哈希。然后在更改事件中获得“val”值。它包含一个整数,但不是索引
然后在Javascript中请求索引为val的项,而不是值为val的项。可能Javascript无法区分它们,因为两者都需要Int
是这样的:
var quantity= eval(selectElement.data("calc"))[itemSelected];
我想你把索引引用和ID引用混在一起了。我不是Javascript向导,但是你用索引列表填充哈希。然后在更改事件中获得“val”值。它包含一个整数,但不是索引
然后在Javascript中请求索引为val的项,而不是值为val的项。可能Javascript无法区分它们,因为两者都需要Int
是这样的:
var quantity= eval(selectElement.data("calc"))[itemSelected];
我猜没有检测到itemSelected的值,因此出现了错误。上面重新定义的代码应该可以工作。但我强烈要求你们不要得到这样的数据。最好通过json调用或ajax调用从控制器获取相关数据。并在代码中使用parents
而不是parent
)
我猜没有检测到itemSelected的值,因此出现了错误。上面重新定义的代码应该可以工作。但我强烈要求你们不要得到这样的数据。最好通过json调用或ajax调用从控制器获取相关数据。并在代码中使用parents
而不是parent
)