javascript - 使用 javascript 提交两份表单,一份提交,一份不提交。不明白为什么?

标签 javascript ruby-on-rails ruby ruby-on-rails-3 forms

我将其作为我的票证模型的 Javascript 代码。

$(document).ready(function() {
 $('#submitForm').click(function(e) {
   $('#form1').submit();
   $('#form2').submit();
 });
});

在我的工单编辑 View 中,我有工单及其评论需要更新。票证表单名为 form1,评论表单名为 form2。如果我的 javascript 代码上只有 form1 ,它会完美更新,当我添加 form2 时,只有 form2 更新,因此只添加注释,票证属性(来自 form1)未更新。

这是我的工单 View 代码(实际上是我在编辑 View 上加载的部分代码”)

<%= form_for @ticket, :html => { :class => 'form-horizontal', :id => 'form1' } do |f| %>
  <div class="control-group">
    <%= f.label :subject, :class => 'control-label' %>
    <div class="controls">
      <%= f.text_field :subject, :class => 'text_field' %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label :content, :class => 'control-label' %>
    <div class="controls">
      <%= f.text_area :content, :class => 'text_area' ,:style => 'height:190px; width:655px', disabled: true %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label "Assigne", :class => 'control-label' %>
    <div class="controls">
      <%= f.collection_select(:user_id,  User.all, :id, :email) %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label :department_id, :class => 'control-label' %>
    <div class="controls">
      <%= f.collection_select(:department_id,  Department.all, :id, :name) %>
  </div>
  </div>
  <div class="control-group">
    <%= f.label :status, :class => 'control-label' %>
    <div class="controls">
      <%= f.select :status, options_for_select(["Open", "In Progress", "Waiting-for-Info", "Closed"]), :class => 'from-control' %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label :priority, :class => 'control-label' %>
    <div class="controls">
      <%= f.select :priority, options_for_select([ "Normal", "High", "Immediate", "Low"]), :class => 'from-control' %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label :due_date, :class => 'control-label' %>
    <div class="controls">
      <%= f.date_select :due_date, :class => 'date_select' %>
    </div>
  </div>
<% end %>
<h4>Comments</h4>
  <div id="comments">
    <%= render :partial => @ticket.comments %>
  </div>
    <%= form_for [@ticket, Comment.new], :html => { :class => 'form-horizontal', :id => 'form2' }  do |f| %>
    <p>
      <%= f.text_area :content, :class => 'text_area' ,:style => 'height:75px; width:600px' %></p></br>

    <% end %>
<%= submit_tag nil, :class => 'btn btn-primary', :id => 'submitForm' %>

我做错了什么吗?

最佳答案

当您调用$('#form1').submit();时,页面会执行http请求。这意味着页面停止执行其 javascript 并开始执行与所述 http 请求相关的操作。 (通常这将是发送到表单目标的 http post,其中表单中的数据被发送到服务器。)

要绕过这个问题,您需要研究 ajax 调用。 ajax 调用是“异步 JavaScript 和 XML”调用,您可以通过 JavaScript 代码执行 http 请求,而无需中断任何其他操作。

Ajax 的答案有点多,所以我会向您指出一些 ajax documentation ,以及 jQuery ajax documentation 。您可能还想浏览一下 HTTP page on wikipedia只是为了更好地了解网络的工作原理。

关于javascript - 使用 javascript 提交两份表单,一份提交,一份不提交。不明白为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24265249/

相关文章:

javascript - 从 $(document).ready 获取特定传递的参数

原型(prototype)上的 JavaScript 和默认值

ruby-on-rails - 运行测试时 has_many 通过 Factory Girl 错误

ruby-on-rails - ActionMailer View : "Need controller and action" 中 url_for 和命名路由的问题

ruby-on-rails - Ruby on Rails : How to customise error message for MailForm when field is blank

ruby - Unicorn 在部署后定期无法重新启动 - PID 过时

ruby - 我的 linux 终端中的 rvm 出现错误

javascript - AngularJS 和 Angular Material 性能问题

javascript - Ajax 内容加载数据库值不起作用

mysql - rails 3.2 + MySQL : Error: Field 'created_at' doesn't have a default value: INSERT INTO