$(document).ready在导航到新页面时不会触发

时间:2018-07-13 15:07:43

标签: javascript ruby-on-rails

我正在开发Rails应用程序,并且仅当用户在输入中键入内容时,才放置一些js以启用提交按钮。然后,我使用$(document).ready来调用该函数。当我第一次加载应用程序时,它工作正常。但是,一旦我转到一个新链接,它就会停止工作。我一直到处逛逛,但建议的答案似乎无济于事。任何帮助,将不胜感激!

application.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。

1 个答案:

答案 0 :(得分:2)

我认为这与涡轮链接有关,该页面实际上并未重新加载,因此您需要通过其他事件运行代码: Rails 5: how to use $(document).ready() with turbo-links