我正在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 .
答案 0 :(得分:1)
Turbolinks是“问题”。 $(document.ready
仅在整页重新加载时触发。您还需要收听$(document).on('page:load', ...)
见OP上的评论#3(上图)。