【问题标题】:How to limit nested form fields using jquery not working如何使用 jquery 限制嵌套表单字段不起作用
【发布时间】:2011-07-20 09:18:47
【问题描述】:

我正在关注 Ryan Bates 关于嵌套表单字段的插曲,并在第 2 部分末尾添加了一些 jquery 建议。一切正常(我能够添加字段和删除字段)。我现在想限制您可以在表单中添加的字段数量。在我的 application.js 中我有

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));
    }
}

但是这不起作用,我在这里做错了什么。感谢您的帮助。

*EDIT
这是表格

<%= 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>

【问题讨论】:

    标签: jquery ruby-on-rails ruby-on-rails-3 nested-forms railscasts


    【解决方案1】:

    只需稍作改动即可计算输入字段的数量:

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

    如果您想使用 id 检查特定 div 的输入内容:“controls”(例如):

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

    【讨论】:

    • 谢谢。完美解决了一个小问题,当我将长度设置为 5 并单击添加字段时,它会将我限制为 3 个字段?有什么想法吗?
    • 您的容器中可能还有 2 个其他类型的输入吗?如果是这样,我们可以优化您的选择器以排除它们。也许如果您向我展示您的一些标记,我们可以为您提供进一步的帮助。
    • 也许我们可以试试你的语句中的文本输入标签。 $('.fields :text').length &lt; 5;
    猜你喜欢
    • 2014-08-17
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多