【问题标题】:How to execute JavaScript after cocoon has loaded a new nested form in Rails?cocoon 在 Rails 中加载了新的嵌套表单后如何执行 JavaScript?
【发布时间】:2014-04-27 14:21:12
【问题描述】:

我想将一些字段设置为隐藏,直到用户单击复选框,然后它们应该显示出来,并且在第一次加载时可以正常工作

$(document).ready(function(){
  $(".m100check").click(function() {
    $(this).parents('.nested-fields').children('.persrecm100').toggle();
    $(this).parents('.nested-fields').children('.bestm100').toggle();   
  });
});

但是当我添加另一个嵌套表单时,此脚本停止为给定字段工作,仍然只适用于与页面一起加载的第一个。在cocoon 完成添加新的form 后,如何强制它工作?

【问题讨论】:

  • 试图完成同样的事情。运气好吗?

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


【解决方案1】:

试试

$('#nested_rows').on('cocoon:after-insert', function(e, insertedItem){
     # your code

});

查看文档中的回调:https://github.com/nathanvda/cocoon

【讨论】:

    【解决方案2】:

    这可能不是最好的方法,但对我来说很有效:

    $(document).on('ready page:load', function () {
        function set_masks () {
            $('.t0000').mask('00,00');
            $('.t000000').mask('00:00,00');
            $('.t000').mask('0,00');
        }
    
        function show_rec () {
            $('.checkbox').click(function () {
                $(this).closest('div.field').find('div.discip').toggle();
            });
        }
    
    
        $('#sportists').on('cocoon:after-insert', function() {
            set_masks();
            show_rec();
        });
    
    
        set_masks();
        show_rec();
    
    
        $(".add_fields").click(function() {
            set_masks();
            show_rec();
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2016-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多