JS脚本仅在我不更改当前页面时有效

时间:2013-09-13 01:05:21

标签: javascript ruby-on-rails ruby ruby-on-rails-4 turbolinks

我正在Ruby on Rails中创建一个Web项目。我在main.js中存储了一个/app/assets/javascripts/文件,我在其中开发了一个小脚本来重置表单。

当我不在网上冲浪时,脚本完美无缺。如果我更改当前页面,脚本将不再起作用。为了让它再次运行,我必须通过浏览器重新加载页面(使用 Cmd + R F5 )。

main.js脚本应该被编译,它应该在项目的所有页面中都可用,不是吗?

怎么了?

main.js中的代码:

// Get rid of data in forms
jQuery.fn.reset = function () {
$(this).find("input, textarea, select").each (function() {
    if ($(this).is(':checkbox')) {
        $(this).prop('checked', false);
    }
    else {
        if (!$(this).is(':hidden') && !$(this).is(':submit')) $(this).val('');
    }
});
}

$(document).ready(function() {

    // Cancel button in forms
    $(".cancel").click(function() {
        $(document).reset();
    })
});

的application.js:

//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require turbolinks
//= require_directory .

1 个答案:

答案 0 :(得分:1)

Turbolinks是“问题”。 $(document.ready仅在整页重新加载时触发。您还需要收听$(document).on('page:load', ...)

见OP上的评论#3(上图)。