Javascript在页面加载之前运行。

时间:2017-06-17 20:56:05

标签: javascript jquery ruby-on-rails

我试图找到一个带有javascript的表单,以便知道是否运行脚本。这是我的代码:

var planSelectionForm = {
  pages: ["#selection", "#payment"],

  init: function(form) {
    // Don't initialize if the page does not have a new payment form
    if (form.length === 0) {
      return;
    }

    var _ = this;

    $(window).on("hashchange", function() {
      if (_.pages.indexOf(window.location.hash) >= 0) {
        _.show(window.location.hash);
      }
    });

    window.location.hash = _.pages[0];
  },

  show: function(section) {
    section = section.replace("#", "");
    if (section === "") {
      section = "selection";
    }
  },
};

// Make the script work on the plan form
planSelectionForm.init($("form#new_account"));

我试图从初始化程序中的页面加载表单。但它总是告诉我表单不在页面上。这是正确的,因为javascript在页面加载之前运行。我认为这与turbolinks有关,但我不确定?如果有人有一个很棒的想法:这是我的application.js

的application.js

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require tooltip.min
//= require pickadate/picker
//= require pickadate/picker.date
//= require pickadate/picker.time
//= require simplemde
//= require_tree .

2 个答案:

答案 0 :(得分:1)

你需要包裹这一行:

planSelectionForm.init($("form#new_account"));
<{3}}事件中的

$(document).on('turbolinks:load', function() {
   lanSelectionForm.init($("form#new_account"));
});

答案 1 :(得分:1)

如果您使用简单的script标记包含已发布的代码,则必须确保仅在页面完全加载后立即运行。使用jQuery,您可以通过调用某事来实现这一点。比如$(window).on("load", function() {...YOURCODEHERE...})。点击此处了解详情:https://learn.jquery.com/using-jquery-core/document-ready/