Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 嵌套rails表单中的动态值不更新_Jquery_Ruby On Rails_Haml - Fatal编程技术网

Jquery 嵌套rails表单中的动态值不更新

Jquery 嵌套rails表单中的动态值不更新,jquery,ruby-on-rails,haml,Jquery,Ruby On Rails,Haml,我正在构建餐厅管理应用程序,我可以选择将某些菜肴添加到订单中。菜品是从下拉列表中选择的,我希望根据所选菜品更新文本字段的值 正如您在gif中所看到的,仅当我选择第一个字段时,该值才会更新,而不是使用cocoon gem动态添加的字段。我的表格haml如下所示: = simple_form_for @order do |f| .meals = f.simple_fields_for :meals, @order.meals.build do |meals| = render

我正在构建餐厅管理应用程序,我可以选择将某些菜肴添加到订单中。菜品是从下拉列表中选择的,我希望根据所选菜品更新文本字段的值

正如您在gif中所看到的,仅当我选择第一个字段时,该值才会更新,而不是使用cocoon gem动态添加的字段。我的表格haml如下所示:

= simple_form_for @order do |f|
  .meals
    = f.simple_fields_for :meals, @order.meals.build do |meals|
      = render 'meal_fields', f: meals
    .links
      = link_to_add_association 'Add meal', f, :meals
    = f.submit
并在
fine_字段中.haml
partial

.nested-fields
    = f.select(:name, options_for_select(@dishes.map{ |dish| [dish.name, 
{'data-description' => dish.price}]}), {include_blank: true}, {class: 'meal-
name'})
    = f.select :quantity, options_for_select((1..10))
    = f.text_field(:price, disabled: true)
    = link_to_remove_association "X", f
我的jQuery代码如下所示:

$(".meal-name").change(function(){
    var chosen = $(this).find(":selected");
    var price = chosen.data("description");
    $(this).siblings("input").val(price);
})

对我来说,它似乎也应该适用于更新的字段。它是一个bug还是一个特性?如何将此代码应用于稍后添加的字段?

jQuery的
。解析代码后,change
函数将立即附加到节点。与查询选择器匹配的新节点将不会添加
.change
事件

相反,您可以观察父对象的更改,并让它附加如下事件:

$('#order-form').on('change', '.meal-name', function() {
  console.log('a .meal-time changed');
  // your code here
});

单击“添加膳食”按钮后,尝试检查类名。似乎类名改变了,这可能是问题的原因。@Pavan感谢您的反馈,但我已经尝试过了。我正试图根据Unixmonkey的答案找出解决方案。谢谢你的回复。这很有帮助。它现在一直在观察变化。但是,当我添加select标记时,它不会重新分配价格,因此价格保持不变。