查找所有选中的复选框无效

时间:2011-09-15 11:15:48

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

我尝试了几种不同的方法来查找所有已选中的复选框,但我不知道为什么这个复选框无效。

JavaScript的:

var idList = new Array();
function getIds()
{
    var loopCounter = 0;
    // find all the checked checkboxes
    $('input[name^="check_"]:checked').each
    {
        function()
        {
            //fill the array with the values
            idList[loopCounter] = $(this).val();
            loopCounter += 1;
        }
    };
}
function showArray()
{
    alert(idList);
}

和HTML / ERB:

<% user_project_ids = @users_projects.collect { |up| up.project_id } %>

<fieldset style="width: 400px;">
    <legend>Current Projects</legend>
    <table>
        <tr>
            <th>Project ID</th>
            <th>Project Name</th>
        </tr>
        <% @projects.each do |project| %>
        <tr>
            <td><%= project.id %></td>
            <td><%= project.project_number %></td>
            <td><%= project.project_name%></td>
            <td><input name="check_<%= project.id %>" type="checkbox"
                <%=' checked="yes"' if user_project_ids.include? project.id %>></td>
        </tr>
        <% end %>
    </table>
</fieldset>

<div onclick="getIds();">
    CLICK
</div>

<button onclick="showArray()">Click Again</button>

不确定为什么这不起作用,但也许有人可以看到我不能。

2 个答案:

答案 0 :(得分:2)

.each的参数需要在圆括号.each()

function getIds()
{
    var loopCounter = 0;
    // find all the checked checkboxes
    $('input[name^="check_"]:checked').each(function() {
        //fill the array with the values
        idList[loopCounter] = $(this).val();
        loopCounter += 1;
    });
}

答案 1 :(得分:0)

另一个答案已经告诉了您有关您的问题,但您的代码可以改进。不需要使用循环计数器,每个都提供迭代次数。

function getIds()
{
    //reset idArray
    idList = [];
    // find all the checked checkboxes
    $('input[name^="check_"]:checked').each(function( ind ) {
        idList[ind] = $(this).val();
    });
}

当您在阵列上添加元素

时,您甚至不需要索引
function getIds()
{
    //reset idArray
    idList = [];
    // find all the checked checkboxes
    $('input[name^="check_"]:checked').each(function() {
        idList.push( $(this).val() );
    });
}