javascript - 如何将详细信息行限制为 10?

标签 javascript ruby-on-rails prototypejs

我关注 Ryan's tutorial通过 Javascript 添加主从行:

def sheet_add_row_link(form_builder)
  link_to_function "Add" do |page|
    form_builder.fields_for :sheet_details, SheetDetail.new, :child_index => 'NEW_ROW' do |f|
      html = render(:partial => 'sheet_detail', :locals => { :df => f })
      page << "$('sheet_details').insert({ bottom: '#{escape_javascript(html)}'.replace(/NEW_ROW/g, new Date().getTime()) });"
    end
  end
end

如何将最大行数限制为 10,而不是无限制?

更新,详细部分代码,_sheet_detail.html.erb:

<div class='sheet_detail'>      
    <div class='<%= 'detail_row_' + @view_row.to_s %>'>
      <div id='detail_model'> <%= df.select :model, models %> </div>
      <div id='detail_quantity'>  <%= df.text_field :quantity %> </div>
    </div>

    <div style="clear:both;"></div>     
</div>

如果我输入:

page << "if($$("sheet_detail").length < 5) {$('sheet_details').insert({ bottom: '#{escape_javascript(html)}'.replace(/NEW_ROW/g, new Date().getTime()) })};"

它返回错误:

/!\ FAILSAFE /!\  Mon May 02 22:18:22 +0800 2011
  Status: 500 Internal Server Error
  sample/app/helpers/sheets_helper.rb:7: syntax error, unexpected tIDENTIFIER, expecting kEND
...  page << "if($$("sheet_detail").length < 5) {$('sheet_detai...
                              ^

最佳答案

您可以在 JavaScript 中添加一个条件,在调用 insert 之前检查行数:

page << "if(lessThanTenRows) { $('sheet_details').insert({ bottom: '#{escape_javascript(html)}'.replace(/NEW_ROW/g, new Date().getTime()) })};"

由于您已经在使用 jQuery,因此您可以通过获取检查行数的 DOM 查询的长度来找到当前行数(例如,通过行使用的特定类等)。

示例

var lessThanTenRows = $$("someRowSpecificClass").length < 10

someRowSpecificClass 是您要在每一行上定义的 CSS 规则(通过每一行的 HTML 中的 class=)。

我会尝试找到一种方法使生成的 JavaScript 更具可读性,但解决方案的重要部分是计算从 DOM 查询中获得的结果数。

关于javascript - 如何将详细信息行限制为 10?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5857472/

相关文章:

javascript - 选中/取消选中所有复选框在 IE8 中不起作用

javascript - 在对象内部使用 Ajax.Request 响应? - 原型(prototype)JS

javascript - Prototype.js 类系统的替代品

ruby-on-rails - Controller 测试,用户需要登录每个测试单元

javascript - JSONP 没有按预期在 AngularJS 中工作

javascript - 如何在不使用apply的情况下实现Function.prototype.apply?

javascript - DIV内容适合所有屏幕上的手机背景图像

ruby-on-rails - Devise_token_auth 重置密码流程 401 错误

ruby-on-rails - 我在 ruby​​ 1.8.7 上有一个新的 Rails 3 应用程序,迁移到 1.9 有何影响?

javascript - Angular 1.2 我在哪里声明错误?工厂未定义