jquery 验证 rails 动态命名的表单

jquery validate rails dynamically named form

我有一个由 rails 动态命名的表单,例如 "edit_project_id",其中 ID 发生变化。如何启用 jquery 验证任何形式 "edit_project%" ?

我试图根据此将名称作为数据属性传递给我的 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 无关紧要..如果可以使用一些通配符或传递变量,两者对我来说都可以,只是不知道怎么做

I have a form dynamically named by rails like "edit_project_id" where ID changes. How to enable jquery validate for any form

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

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

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

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


当 "starts with" 类似于 edit_user...

时以 data 属性为目标
$('[data^="edit_user"]').validate({ ...

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

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