javascript - $(document).ready 导航到新页面时不会触发
问题描述
我正在开发一个 Rails 应用程序并放置一些 js 来启用提交按钮,只有当用户在输入中输入某些内容时。然后,我曾经$(document).ready
调用该函数。当我第一次加载应用程序时它工作正常。但是,一旦我转到新链接,它就会停止工作。我一直在环顾四周,但建议的答案似乎都没有帮助。对此的任何帮助将不胜感激!
应用程序.js
//= require jquery
//= require popper
//= require bootstrap-sprockets
//= require rails-ujs
//= require turbolinks
//= require_tree .
//= require_self
// Global application events
var applicationHandler = (function() {
// Per Design specs, a submit button on a form should be disabled until all form fields are filled out
var verifyFormInputsBeforeSubmit = function() {
$('form input').on('keyup', function() {
var inputLengths = 0;
var allInputs = $('input:not([type="submit"]');
allInputs.each(function() {
if ($(this).val()) {
inputLengths += 1;
}
});
if (inputLengths == allInputs.length) {
$("input[type=submit]").removeAttr("disabled");
} else {
$("input[type=submit]").attr("disabled", "disabled");
}
});
};
return {
verifyFormInputsBeforeSubmit: verifyFormInputsBeforeSubmit
};
})();
$(document).ready(function() {
console.log("wee");
applicationHandler.verifyFormInputsBeforeSubmit();
});
我如何链接到新页面:
<%= link_to "Forgot password?", new_password_path(resource_name), class: 'small float-right' %>
应该注意的是,wee
当我加载索引页面时,它会显示在控制台上,但是当我进入忘记密码页面时,什么都没有显示。如果我刷新忘记的密码,我会wee
在控制台中看到 并且 js 运行。
解决方案
我相信这与 turbolinks 有关,页面实际上并没有重新加载,因此您需要通过不同的事件运行代码: Rails 5: how to use $(document).ready() with turbo-links
推荐阅读
- python - 如何在 Python 中隔离 ANTLR 解析器的测试用例?
- r - 将一列的值逐步求和链接到 R 中的另一列
- r - 如何设置独立于或直接链接到ggplot2中某些值的图例/键和颜色?
- python - 如何创建一个包含元素 0 n 次的列表?Python
- elasticsearch - Elasticsearch,索引维护/从大索引中删除文档
- c++ - MFC MDI ID_FILE_OPEN 非覆盖,但将变量用于状态消息
- gitpython - 如何使用 gitpython 检索默认存储库分支?
- c# - Entity Framework Core:获取行的循环参考
- eloquent - Laravel 如何重用有很多关系到性能
- javascript - 如何在 Javascript 中使用 Plotly 图形以 hh:mm:ss 格式在 y 轴上显示时间?