Как ограничить вложенные поля формы с помощью JQuery не работает - PullRequest
0 голосов
/ 20 июля 2011

Я слежу за эпизодом Райана Бейтса на вложенных полях формы и добавил бит jquery, предложенный в конце части 2. Все работает хорошо (я могу добавлять поля и удалять поля). Теперь я хочу ограничить количество полей, которые вы можете добавить в форму. в моем приложении. у меня есть

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 Ответ

1 голос
/ 29 июля 2011

просто небольшое изменение для вычисления количества полей ввода:

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

Если вы хотите проверить входное содержимое определенного div с id: «controls» (как пример):

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