【问题标题】:Javascript calculation not triggered inside rails nested form在 Rails 嵌套表单中未触发 Javascript 计算
【发布时间】:2017-06-20 11:59:18
【问题描述】:

我在我的 rails 应用程序中使用了nested_form。我需要在嵌套表单中添加 onchange 事件。每次添加新行并在 quantity 文本字段中输入值时,该值应与先前添加行的 quantity 字段一起添加。添加的值应显示在total 文本字段中。目的是找到quantity 的总和并显示在total 字段中。此脚本应该适用于嵌套表单中添加的每个新行。有人请帮忙。提前致谢。

我的Gemfile

gem 'rails', '~> 5.0.2'
gem 'pg', '~> 0.18'
gem 'puma', '~> 3.0'
gem "responders"
gem "active_model_serializers", github: "rails-api/active_model_serializers"
gem 'date_validator'
gem 'axlsx_rails'
gem 'carrierwave', '~> 1.0'
gem 'jquery-ui-rails'   
gem "select2-rails"
gem 'bootstrap', '~> 4.0.0.alpha6'
gem 'font-awesome-sass', '~> 4.7.0'
gem 'will_paginate', '3.1.5'
gem "nested_form"
gem 'yaml_db'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'jquery-rails'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.5'

我的application.js

//= require jquery
//= require jquery_ujs
//= require select2
//= require jquery_nested_form
//= require turbolinks
//= require jquery-ui
//= require bootstrap
//= app
//= vendor
//= require_tree .

还有我的_form.html.erb

<%= nested_form_for(normalmenu_site) do |f| %>
     <%= f.text_field :total, readonly: true, class: "tot" %>
     <table class="table table-container" id="tasks">  
        <thead>
          <th>Quantity/Per Head</th>      
          <th>Action</th>    
        </thead>  
        <tbody>
          <%= f.fields_for :normal_menus ,wrapper:false  do |ff| %>
            <tr class="fields">              
            <td><%= ff.text_field :quantity, class: "dt" %></td>      
            <td><%= ff.link_to_remove "".html_safe,:class=>"fa fa-trash-o "%></td>      
            </tr>      
          <%end%>
           <%= f.link_to_add "".html_safe, :normal_menus,:class=>"fa fa-plus ", :data => { :target => "#tasks" } %>  
        </tbody>
      </table>
   <% end %>

<script type="text/javascript">
  $(document).on('nested:fieldAdded', function(event){
    var field = event.field;
    var total = ($(".tot").val());
    var roleField = field.find('.dt');
    $(".dt").keyup( function() {
      alert(roleField.val());
      var total += roleField.val();
    });
  })
</script>

【问题讨论】:

  • 您是否记住添加的每个嵌套元素都有一个唯一的 ID?你试过nested:fieldAdded:normal_menus吗?

标签: javascript ruby-on-rails nested-forms


【解决方案1】:

根据文档here

此 gem 仅适用于 Rails 3。请参阅 rails2 分支以获取插件 在 Rails 2 中工作。

nested_form 仅适用于rails 3,但您使用的是rails 5

【讨论】:

  • 它适用于 Rails 3 和版本 4。我目前也在 Rails 5 中使用。
  • 不过,那个 gem 不再维护了。我看不到任何新的提交,最后一次提交是从 2013 年开始的。你最好使用其他一些 gem。你可以和茧一起去github.com/nathanvda/cocoon
猜你喜欢
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
相关资源
最近更新 更多