【问题标题】:rails 4 form submit as div, validation not workingrails 4 form提交为div,验证不起作用
【发布时间】:2015-04-08 04:20:00
【问题描述】:

我在尝试使用 div(而不是 f.submit 按钮)提交表单时遇到问题

<%= form_for @user, url: {action: "submit_user"}, html: {id: "user_submit", class: "form"}, :method => "post" do |f| %>
     <%= f.text_field :first name, :required => true, :placeholder => 'first name', :autocomplete => :off %>
     <%= f.text_field :last name, :required => true, :placeholder => 'last name', :autocomplete => :off %>
     <div id="submituser" class="some very fancy css here" onclick = "document.forms['user_submit'].submit();">
<% end %>

问题是表单已发送,但没有验证(如果未输入任何内容,则会发送空白的名字和姓氏)

注意使用时

<% f.submit "submit" %>

验证确实有效。

谢谢

【问题讨论】:

  • 你也可以在服务器端进行这样的验证.. :)
  • 是的,确实如此,但经过 2 小时的挫折。我不想要你的任何恶作剧;)

标签: ruby-on-rails forms validation ruby-on-rails-4 form-for


【解决方案1】:

我猜document.forms['user_submit'].submit(); 不会触发提交事件,所以您必须手动启动验证。但是使用div 而不是button 有什么意义呢?您也可以使用some very fancy css here 设置按钮样式。或者制作一个“隐藏”提交按钮并将onclick = "document.form.button.click()" 添加到div :-)

【讨论】:

  • 感谢@IvanSelivanov,但我对其进行了测试,但它对您的问题不起作用(仍然跳过验证):document.forms['user_submit'].submit(); 确实触发了提交表单,但跳过了验证部分。对于样式问题,我有一个非常复杂的按钮,它是由多层 div 创建的,这就是为什么提交按钮对我来说是不够的。
  • @amitben,我想答案就在这里:stackoverflow.com/questions/18774821/…
  • 感谢您的提示,我需要进一步调查。
【解决方案2】:

在这里找到我的答案: Difference between handling $(“form”).submit or an click event?

我引用@Giovanni Sferro:

只有当用户实际点击提交按钮时才会调用点击回调。但是在某些情况下,您会通过 javascript 自动提交表单,在这种情况下,在提交回调时不会触发点击回调。我建议始终使用提交来进行表单的验证和内在操作,同时将点击回调用于动画或与单击按钮的操作相关的其他内容。

所以我的(工作)代码如下所示:

<div id="submituser" class="some very fancy css here" onclick = '$("#user_submit input[type=\"submit\"]").click();'>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    相关资源
    最近更新 更多