从JQuery中的另一个文件调用函数

时间:2019-07-11 10:18:26

标签: javascript jquery ruby-on-rails

我是JS和JQuery的新手。有没有办法像Ruby一样从另一个文件中的一个文件调用函数?

global_validation.js

$(document).ready(function() {
  var form = $('#vr-managed-form, #userRegistrationForm');

  if (form.length > 0) {
    var submit = form.find('input[type="submit"]');

    submit.click(function (evt) {
      evt.preventDefault();

      var invalidInput = $('input:invalid');

      if (invalidInput.length === 0) {
        form.submit();
      } else {
        invalidInput.addClass('invalid');
        validateRadios();
      }
    });

  function validateRadios() {
    var radio = $('input[type=radio]');
    var radioInvalid = $('input[type=radio]:invalid');
    var radioMsg = $('.radio-invalid-msg')

    if (radio) {
      if (radioInvalid.length > 0) {
        radioMsg.addClass('invalid');
      }

      radio.click(function () {
        if (radio.is(':checked')) {
          radio.removeClass('invalid');
          radioMsg.removeClass('invalid');
        } else if (radio.is(':not(:checked)')) {
          radio.addClass('invalid');
          radioMsg.addClass('invalid');
        }
      });
    }
  }
});

我想在其他文件中使用此validateRadios()。如果我将整个文件打包成这样的新功能:

function validateManager() {
  $(document).ready(function() {
    var form = $('#vr-managed-form, #userRegistrationForm');

  // and all logic from file global_validation.js
}

当我试图在另一个文件中简单地引用它时(如下所示),它将无法正常工作。

create.js

$(document).ready(function () {
  var form = $('#userRegistrationForm');
  var submit = form.find('input[type="submit"]');


  submit.click(function(evt) {
    evt.preventDefault();

    $("#user-name").text(firstName + " " + lastName);

    if (invalidInput.length === 0) {
      form.submit();
    } else {
      invalidInput.addClass('invalid');
      validateManager();
    }
  });

1 个答案:

答案 0 :(得分:0)

如果在具有该函数调用的js文件之前加载了具有函数定义的js文件,则我们可以像上面一样正常调用它,但不能以其他方式调用它。 您可以参考this link