如何在代码触发事件时使用.submit()

时间:2016-06-05 23:35:42

标签: javascript jquery ruby-on-rails forms

在我的rails应用程序中,我有一个模式中的表单,如下所示:

<div id="flag-user-modal" class="modal in" tabindex="-1">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
        <h4>Report user</h4>
      </div>
      <div class="modal-body">
        Why are you reporting this user?
        <form id="report-user-form" novalidate="novalidate" class="simple_form flag" action="/user_users/flag" accept-charset="UTF-8" method="post">
          <div class="form-group hidden flag_user_user_id"><input value="26" class="hidden form-control" type="hidden" name="flag[user_id]" id="flag_user_id"></div>
          <div class="form-group text required flag_reason" aria-required="true">
            <textarea rows="2" class="text required form-control" name="flag[reason]" id="flag_reason" aria-required="true"></textarea>
          </div>
        </form>
      </div>
      <div class="modal-footer">
        <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Cancel</button>
        <button id="submit" class="btn btn-primary btn-disabler">
          <span class="btn-label">Report</span>
        </button>
      </div>
    </div>
  </div>
</div>

我提交了一些jquery:

  $('#flag-user-modal #submit').on('click', function() {
    $('#flag-user-modal form').submit();
  });

我正在使用jquery validate验证表单:

  $('#report-user-form').validate({
    rules: {
      "flag[reason]": "required"
    }
  });

我想在成功提交时禁用提交按钮并显示加载指示,这样用户就无法继续按提交,但我遇到了麻烦。

  $('#report-user-form').on('submit', function() {
    $(this).find('.btn-disabler')append("<i class='fa fa-spinner fa-pulse btn-loader'>").disable(true);
    $(this).find('.btn-label').addClass('invisible');
  });

我读到.submit()事件在被代码激活时不会触发。这可能是也可能不是问题。关于如何实现我想要的功能的任何想法 - 仅在成功提交时禁用按钮并显示加载fa-icon,而不是在jquery验证器失败时显示。

2 个答案:

答案 0 :(得分:1)

AudioSystem.getAudioInputStream

答案 1 :(得分:0)

查看jquery验证我可以使用submitHandler选项来完成我想要的任务。

  $('#report-user-form').validate({
    submitHandler: function(form) {
      $('#report-user-form').find('.btn-disabler').append("<i class='fa fa-spinner fa-pulse btn-loader'>").disable(true);
      $('#report-user-form').find('.btn-label').addClass('invisible');
      form.submit();
    },
    rules: {
      "flag[reason]": "required"
    }
  });