Показать сообщение отдельно
  #2 (permalink)  
Старый 23.02.2011, 16:38
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

Это связано с тем, что удаляя checkbox`ы, вы неявно изменяете «массив» inputs, уменьшая его длину. При попытке доступа к элементу по неверному индексу происходит ошибка Javascript и форма сабмитится, как если бы Javascript вообще был отключен. Решение — например, использовать не «живой» массив, возвращаемый методом getElementsByTagName, а обычный массив со ссылками на все input`ы.
function deleteRows(tableId) {
    var table = document.getElementById(tableId); 
    var inputs0 = table.getElementsByTagName("input");
    var i = inputs0.length;
    var inputs = new Array();
    while (i--) inputs.push(inputs0[i]);
    i = inputs.length;
    while (i--) {
        var input = inputs[i];
        if (input.getAttribute("type") == "checkbox" && input.checked == true) {
            var tr = input.parentNode.parentNode;
            table.deleteRow(tr.rowIndex);
        }
    }
}


Либо прямо в цикле вызывайте метод getElementsByTagName.
Ответить с цитированием