0

我跟随Ryan Bates情节嵌套的表单域,并添加了第2部分末尾建议的jQuery的位。一切正常(我能够添加字段并删除字段)。我现在想限制你可以在窗体中添加的字段的数量。在我的application.js我有
如何限制嵌套的表单域使用jquery不工作

function add_fields(link, association, content) { 
     var new_id = new Date().getTime(); 
     var regexp = new RegExp("new_" + association, "g") 
     $(link).parent().before(content.replace(regexp, new_id)); 
} 

瑞安贝茨撰写。阅读另一篇文章中我改变了线到现在阅读:

function add_fields(link, association, content) { 
    if($(".fields input").length < 5) { 
     var new_id = new Date().getTime(); 
     var regexp = new RegExp("new_" + association, "g") 
     $(link).parent().before(content.replace(regexp, new_id)); 
    } 
} 

然而,这是不行的,我在这里做得不对。谢谢您的帮助。

*编辑
这是形式

<%= form_for @question, :url => { :controller => "questions", :action => "create" } do |f| %> 
    <%= f.label(:name, "Request Question:") %>&nbsp;&nbsp; 
    <%= f.text_field(:name, :size => 72, :maxlength => 120, :id => "name") %><br /> 
    <fieldset> 
     <legend><b>Tags</b></legend> 
     <%= f.fields_for :tags, :url => { :controller => "tags", :action => "create" } do |builder| %> 
      <%= render "tag_fields", :f => builder %> 
     <% end %> 
     <p><%= link_to_add_fields "Add new keyword", f, :tags %></p> 
    </fieldset> 
<% end %> 

标记字段局部

<p class="fields"> 
    <%= f.label(:keyword, "Keywords:") %>&nbsp;&nbsp; 
    <%= f.text_field(:keyword, :size => 20, :maxlength => 25, :id => "keyword") %> 
    <%= link_to_remove_fields "remove", f %> 
</p> 

回答

1

只是一个小的变化,以计算输入字段的量:

function add_fields(link, association, content) { 
    if($(":input").length < 5) { 
     // logic to add items 
    } 
} 

如果你想检查与ID的特定div的输入内容:“控制”(为例):

function add_fields(link, association, content) { 
    if($("#controls :input").length < 5) { 
     // logic to add items 
    } 
} 
+0

谢谢。解决完美,但是一个小问题,当我将长度设置为5,然后单击以添加字段时,它将我限制为3个字段?任何想法? – Hishalv

+0

在你的容器中是否有其他2种类型的输入?如果是这样,我们可以优化您的选择器以排除它们也许如果你向我展示一些你的标记,我们可以进一步帮助你。 – f0x

+0

请参阅上面的编辑,再次感谢您的帮助。 – Hishalv