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