Поиск всех отмеченных флажков не работает - PullRequest
0 голосов
/ 15 сентября 2011

Я пробовал несколько разных способов найти все флажки, которые отмечены, но я не знаю, почему этот не работает.

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 ]

2 голосов
/ 15 сентября 2011

Параметр в .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;
    });
}
0 голосов
/ 15 сентября 2011

Другой ответ уже говорил вам о вашей проблеме, но ваш код может быть улучшен. Нет необходимости использовать счетчик цикла, каждый из которых предоставляет номер итерации.

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() );
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...