当前位置: 首页 > 面试题库 >

将新表单添加到DOM时,client_side_validations(3.1.0)不起作用

劳和雅
2023-03-14
问题内容

我正在使用Rails 3.1.0rc4和client_side_validations
3.1.0。只要在主请求中呈现表单,一切都可以完美地工作。但是,如果表单本身是通过javascript添加到页面的,则提交表单会导致服务器端验证。我怀疑问题在于,当通过javascript将表单添加到页面时,我需要以某种方式“绑定”客户端验证功能。

例如,假设我有一个简单的表单,您可以在其中发布新的工作清单:

#jobs/new.html.erb
<%= form_for [@job], :validate => true  do |f| %>

  <%= render :partial => 'common/form_errors', :locals => {:record => @job} %>

  <div class="field">
      <%= f.label :title %>
      <%= f.text_field :title %>
  </div>
  <div class="field">
    <%= f.label :description %>
    <%= f.text_field :description %>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

以及我模型中的以下验证:

class Job < ActiveRecord::Base
  validates_presence_of :title, :description
end

如果我通过在浏览器中访问new_job_path来访问此表单,则我的客户端验证非常有用。

但是,如果我将此表单插入另一个页面(例如,jobs_path索引页面),则如下所示:

#jobs/index.html.erb
<%= render @jobs %>

<div id="form-job-new"> </div>

<%= link_to 'New Job', new_job_path, :remote =>true %>

和:

#jobs/new.js.erb
$('#form-job-new').append("<%= escape_javascript render(:file => 'jobs/new.html.erb') %>");

然后在提交表单时,验证将应用于服务器端。

知道我缺少什么吗?


问题答案:

在此gem的javascript源代码中找到了答案:

// Main hook
// If new forms are dynamically introduced into the DOM the .validate() method
// must be invoked on that form
$(function() { $('form[data-validate]').validate(); })

因此,在我的特定情况下,我需要这样做:

#jobs/new.js.erb
$('#form-job-new').append("<%= escape_javascript render(:file => 'jobs/new.html.erb') %>");
$('form[data-validate]').validate();


 类似资料:
  • 我的GridbagLayout有些问题。我创建了一个JPanel(在本例中称为mainPanel),它的布局被设置为GridBagLayout。我已经为每个JButton指定了约束,并将约束添加到每个Button。现在,当我运行代码时,按钮总是紧挨着的,而不考虑我在约束中指示的Gridx/Gridy值。此外,按钮总是位于JFrame的中心,我希望一个按钮出现在右上角、左上角和南边。 这是我运行代码

  • 问题内容: 我发现,当我编写“ pnlMap.add(map [i] [j])”时,键侦听器将无法工作。map是JButton的集合,pnlMap是JPanel。 公共游戏(玩家播放器){ 问题答案: 为了工作,必须将其注册为可聚焦的组件并使其具有键盘焦点。默认情况下,大多数容器都喜欢和无法将其聚焦(在考虑使它们成为容器之前,我会非常小心)。这意味着,一旦您添加了一个可以接受键盘焦点的组件(并且它

  • 我想登录两种不同的用户类型。所以我这样编码。但是addListenerForSingleValueEvent中的for循环在此不起作用,请帮助。它好像不会进入for循环。请帮助我在这个登录卡。JAVA 火基

  • 问题内容: 我正在尝试创建一个简单的程序来管理员工。尝试添加新员工时,我似乎无法让该员工显示在Jlist上。 主机… 添加员工的对话… 这就是我用来添加员工的方法 我认为这是正确的方法,但似乎无效。任何帮助将不胜感激。 问题答案: 有两个问题, 第一个: 不好:。使用equals(…)或equalsIgnoreCase(…)。理解检查是否绝对不是您感兴趣的 引用 相等性。您需要 函数 相等性,这是

  • 问题内容: 我已经设置了版本4 的React。当我直接在浏览器中输入URL时,路由有效,但是当我单击链接时,URL在浏览器上发生了变化(例如http:// localhost:8080 / categories ),但是内容不会更新(但是如果我刷新,它会更新)。 以下是我的设置: 该 Routes.js 设置如下: 我在 Nav.js 中使用的链接如下: 该 App.js 如下: 问题答案: 包装

  • Im使用AJAX向datatable添加多行,其中包含一个复选框作为元素。我已经为复选框编写了一个代码,在选择/取消选择'select-all'之后,tbody中的所有子复选框都应该相应地被选中或取消选中。并且在手动选择/取消选择任何子复选框后,“选择-全部”复选框应该会更改。但这部分不起作用。