Эффект подсветки jQuery неожиданно обновляет страницу - PullRequest
1 голос
/ 23 июня 2011

У меня есть форма, которая выглядит следующим образом:

<form id="addClassesToDoc" action="">
    <table id="classesTable" style="border-collapse: collapse" cellpadding="3">
        <thead>
            <tr style="background-color: #a04a56; color: #ffffff;">
                <td width="50px"></td>
                <td width="75px"><b>Class<br />Number</b></td>
                <td width="500px"><b>Class Name</b></td>
            </tr>
        </thead>
        <tbody>
            <tr bgcolor="#EFE5D3">
                <td align="center"><input type="checkbox" class="chkAddClass" name="classesToAddToDoc[]" value="45" /></td>
                <td>PHB7075</td>
                <td>Organizational Systems and Leadership </td>
            </tr>
            <tr bgcolor="">
                <td align="center"><input type="checkbox" class="chkAddClass" name="classesToAddToDoc[]" value="126" /></td>
                <td>TEST111</td>
                <td>Test add new class</td>
            </tr>
        </tbody>
    </table>
</form>

Я проверяю, установлены ли какие-либо флажки перед вызовом $ .ajax (), используя этот код:

var classesToAddToDoc = new Array();
if ($('input.chkAddClass:checked').length > 0) {
    // At least one class checked
    // Get the id(s) of the checked class(es)
    $.each($('#classesTable input[name="classesToAddToDoc[]"]:checked'), function() {
        classesToAddToDoc.push($(this).attr('value'));
    });
} else {
    // No docs checked
    //alert('Please check at least one class to add to the selected document.');
    $.each($('#classesTable input[type="checkbox"]').parent().effect('highlight',{color: '#A04A56'},1500));
    return false;
}

В предложении else, когда у меня есть предупреждение без комментария и закомментированная строка выделения, предупреждение отображается, и страница остается в том же положении.

Но когда я закомментирую предупреждение и раскомментирую выделенную строку, страница обновится, ячейки флажков будут выделены, а параметры формы добавлены в адресную строку, как показано ниже:

* * 1010

[ pageAddress ]? DocsList = 46 & submitAddClassesToDoc = + Добавить Проверено + Классы + до + Выбранный + Документ

Почему основной момент делает это и как я могу остановить это?

1 Ответ

1 голос
/ 23 июня 2011

Я не уверен, как именно изменить каждую часть - я все еще выясняю, как основы jQuery

Конечно, я могу, по крайней мере, показать вам, как это убрать:

var classesToAddToDoc;
if ($('input.chkAddClass:checked').length)
{
    // At least one class checked
    // Get the id(s) of the checked class(es)
    classesToAddToDoc = $('#classesTable input[name="classesToAddToDoc[]"]:checked').map(function ()
    {
        return $(this).val(); // probably want .val() over .attr('value')
    }).get();
}
else
{
    // No docs checked
    //alert('Please check at least one class to add to the selected document.');
    $('#classesTable input:checkbox').parent().effect('highlight',{color: '#A04A56'},1500));
    return false;
}

Кроме того, примеры, которые я вижу в документации по .each (), содержат функции - как мне использовать это в моем случае?

* * 1010

Что-то вроде

$('some selector here').each(function (index, element)
{
    // do something for each element

    // index is the current index of iteration
    // this and element are references to the current element
});

Тебе вообще не нужно .each() в твоем конкретном случае.

...