如何在cocoon在Rails中加载新的嵌套表单后执行JavaScript?

时间:2014-04-27 14:21:12

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

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

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

但是当我添加另一个嵌套表单时,此脚本停止为给定字段工作,仍然只能在第一个加载页面的脚本上运行。在cocoon添加新的form后,我该如何强制它工作?

1 个答案:

答案 0 :(得分:0)

这可能不是最好的方法,但它对我有用:

$(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();
    });
});