【问题标题】:jquery validate rails dynamically named formjquery validate rails 动态命名表单
【发布时间】:2016-02-28 21:47:36
【问题描述】:

我有一个由 Rails 动态命名的表单,例如 ID 发生变化的“edit_project_id”。如何为任何表单“edit_project%”启用 jquery 验证?

我试图根据这个将名称作为数据属性传递给我的 javascript/coffee http://railscasts.com/episodes/324-passing-data-to-javascript 但没有运气

我已经添加了这个标签来传递名称变量

<%= content_tag "div", id: "form_name", data: {name: "edit_user_#{@project.id}" } %>

然后在我的咖啡中我尝试使用它但没有运气

jQuery -> 
$('#form_name').data('name').validate(
     lang: 'sk'
     rules:
        'project[amount]': min: 1
     highlight: (element) ->
        $(element).parent().addClass 'state-error'
        return
     unhighlight: (element) ->
        $(element).parent().removeClass 'state-error'
        return
);

最后,我希望我的咖啡脚本验证每个用于 edit_project 的表单无关 ID..如果可以使用一些通配符或传递变量,对我来说都可以,只是不知道该怎么做

【问题讨论】:

  • 我不太确定你的 JS 的第一行是什么——$ 符号只是调用 jQuery 的另一种方式,不是吗?另外,我认为 Railscast 在 turbolinks 之前,所以如果你使用的是 turbolinks,那么你应该调用 $.document.ready()。
  • 这是我在新项目和作品中使用的,所以我尝试改变获取元素名称的方式jQuery -&gt; $('#new_project').validate( lang: 'sk' rules: 'project[amount]': min: 1 highlight: (element) -&gt; $(element).parent().addClass 'state-error' return unhighlight: (element) -&gt; $(element).parent().removeClass 'state-error' return );

标签: jquery ruby-on-rails ruby-on-rails-4 coffeescript jquery-validate


【解决方案1】:

我有一个由 Rails 动态命名的表单,例如 ID 发生变化的“edit_project_id”。如何为任何表单启用 jquery 验证

仅供参考 - .validate() 方法不需要附加到 id。你可以使用any valid jQuery selector你可以想象。唯一的要求是选择器只能定位一个表单,而不是一组表单。

因此,如果页面上只有一个表单,您可以简单地定位 &lt;form&gt; 标记本身...

$('form').validate({ ...

如果这不可接受,则检查渲染的 DOM 并根据其他一些标准构造一个可靠的 jQuery 选择器。


data 属性“以”类似edit_user...的形式开始时定位它。

$('[data^="edit_user"]').validate({ ...

如果您有多个匹配选择器的form,请将其包装在.each() 中,.validate() 将附加到所有匹配的表单中..

$('[data^="edit_user"]').each(function() {
    $(this).validate({ ...

【讨论】:

  • 太棒了,将 jquery 更改为目标 validate 以工作并帮助我可以在我的视图中为每个表单使用一个 javascript
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-01
相关资源
最近更新 更多