如何确保 Rails 表单在验证所有字段后仅提交一次?

问题描述 投票:0回答:4

我的 Rails 应用程序中有一个表单,但多次单击时会提交多次。我想确保在检查所有验证时表单仅提交一次。我尝试在单击时禁用按钮,但它仅禁用按钮而不发送数据或检查验证。

请帮助我。预先感谢。

javascript ruby-on-rails forms validation
4个回答
0
投票

您可以使用 ClientSideValidation gem 来检查字段是否有效(它使用模型验证规则)。
在所有字段都有效之前,您的表格才会发送。


0
投票

您可以使用 if 或 except 条件来完成

 <%unless object.new_record?%>

 <%=f.submit "save",:diabled=>'true'%>

 <%end%>

0
投票

ClientSideValidation gem 具有可用于启用/禁用提交按钮的回调。 https://github.com/DavyJonesLocker/client_side_validations#callbacks

// You will need to require 'jquery-ui' for this to work
window.ClientSideValidations.callbacks.form.fail = function(form, message, callback) {
  form.find('#submit-button').prop('disabled', true)
}

window.ClientSideValidations.callbacks.form.pass = function(element, callback) {
  form.find('#submit-button').prop('disabled', false)

}


0
投票

Rails 有一个内置的

disable_with
方法,您可以在链接和按钮上使用它。所以你可以这样做:
button_tag "Checkout", data: { disable_with: "Please wait..." }
。一旦您的按钮被单击一次,该按钮将被禁用(并且不再有数据发送到您的控制器),并且按钮上的文本将被替换为“请稍候...”。

© www.soinside.com 2019 - 2024. All rights reserved.