使用rails 3中的Jquery将值推入隐藏字段数组

时间:2012-04-03 13:31:12

标签: jquery ruby-on-rails ruby-on-rails-3

当用户点击表格底部div的任何一行时,我希望这样。我将该行的id插入隐藏

字段数组。因此用户可以选择多行。我想要插入id到隐藏字段数组

当点击事件将被调用..

我的HTML代码是

     <div id="originator_rates">
       <% unless @orig_codes.blank? %>
         <% @orig_codes.each do |code| %>
         <div id="<%= code.id %>_"  onclick="rate_entry_select_originator('<%=code.id%>')" class="rate_select">
            <%= hidden_field_tag 'code_id[]', :id => 'code_id' %>              
         </div>  
      <%end%> 
      <div>

我的js代码是

       function rate_entry_select_originator(code_id) {
          $('#code_id').push(code_id);  //how i push values into array


       }

2 个答案:

答案 0 :(得分:0)

如果要维护代码ID列表,则不要管理多个隐藏字段,而是管理单个字段(id为CSV值)。

尝试并做出以下更改:

更改为javascript函数的传递值

<div id="<%= code.id %>_" onclick="rate_entry_select_originator(this)" class="rate_select">

在开始循环之前添加。

<%= hidden_field_tag 'code_ids', :id => 'code_ids' %>

修改你的javascript函数:

    function rate_entry_select_originator(code_id) {
      var code_id_val = $('#code_ids').val();
      var code_id_arr = code_id_val.split(',');
      var code_id = $(this).attr('id');

      if($(this).hasClass("color_class"))
      {
        $(this).addClass("color_class");
        $('#code_ids').val(code_id_val+','+code_id);
      }
      else
      {
        $(this).removeClass("color_class");
        // To remove element from aaray
        code_id_arr = jQuery.grep(code_id_arr, function(code_id) {
          return value != removeItem;
        });
        $('#code_ids').val(code_id_arr.join(','));

      }
    }

Please correct some errors , I didn't run it.
Hope that will help. 

答案 1 :(得分:0)

你不能使用hidden_​​field array.rather而不是使用单个隐藏字段并以逗号分隔推送值。