我的页面通过jQuery将表单呈现为html。偶尔,当我点击提交或按回车键时,按钮会转到“加载”状态。状态但表单没有提交,服务器或网络选项卡上没有任何反应,用户必须重新加载页面才能尝试再次提交表单。因此,我从表单中删除了按钮并将其放置在以后,并且在单击此按钮时更改了jQuery以提交表单。这工作正常,但用户现在无法单击Enter提交表单,这是我的客户端的一个重要用例。有谁知道原始问题或潜在修复的原因是什么?谢谢!
新jQuery
$("#add_order_btn").click(function(){
$(this).button('loading');
$("#new_order").submit(); # added as fix when button moved outside the form
});
新表格
<%= form_for(@new_order, url: add_order_url, method: "post", remote: true, class: "form-inline mb0") do |f| %>
<%= f.text_field :order_start_date_time, class: "new-order-datetime input-medium", placeholder: "Start date & time", id:"new_order_time" %>
<%= f.text_field :yrd, placeholder: "# of yards", class: "span2" %>
<%= f.check_box :plus %>
<%= f.label :plus, '<i class="fa fa-plus" id="go_plus"> </i>'.html_safe, class: "label_inline mr15" %>
<%= f.text_area :notes, placeholder: "Private Dispatch notes", class: "span12", id: "new_text_area", rows: "1" %>
<h4 class="mt5" id="new_order_extras">Order extras
<%= link_to "Add", new_order_extras_url, remote: true %>
</h4>
<% end %>
<%= button_tag '<i class="fa fa-list-alt"></i> New Order'.html_safe, class: "btn btn-primary btn-block btn-large mt5 mb15", id: "add_order_btn" %> # Moved out of form as fix
答案 0 :(得分:1)
我通过单击按钮点击未生成正确的事件之前提交表单提交时遇到了跨浏览器问题。此外,如果按钮上有其他处理程序,它们有时会干扰与表单相关的事件。处理表单时,我通常会使用提交事件获得更好的结果。
将按钮放回表格中。然后捕获form.submit事件而不是button.click事件。
$("#new_order").submit( function(evt) {
evt.preventDefault();
var btn = $(this).find('button[type=submit]');
// Do whatever it is you do here to indicate the loading state
// handle the form submission
// Undo your button load state
});