Извлечение значений элементов управления в каждой строке таблицы с использованием Jquery

0

Пожалуйста, посмотрите здесь: (Обновлено) DEMO

Я пытаюсь создать запятую , а pipe | разделенная строка значений элементов управления в каждой строке таблицы. Каждое значение управления разделяется запятой и каждой строкой, разделенной трубой, которую я делаю, используя этот кусок кода.

$("#btnsave").click(function () {
    var result = "";
    $("#field tr").each(function (iRow, row) {
        $("td input", row).each(function (iField, field) {
            result += $(field).val() + ",";
        });
        result = result + "|";
    });
    alert(result);
});

Проблема с этим кодом заключается в том, что он исключает DropDown. А также я хотел бы включить номер строки, который показан в первом столбце. Хотя я использую этот код прямо сейчас, я не очень понимаю его. Может кто-нибудь объяснить этот код мне, я нооб в JQuery.

1 ответ

1

Добавление выпадающих select, по которым, я думаю, вы имеете в виду элементы select, довольно просто, просто изменив вместо этого $('td input', row) на $('td input, td select', row).

Я создал пример (http://jsbin.com/garohure/1/edit), который также включает в себя первый столбец на выходе:

function tableToString(){
    var rows = [];

    $("#field tr").each(function (iRow, row) {

        var cells = [],
            firstTd = $(row).find('td').first();

        cells.push( firstTd.text() );

        $(row).find('input,select').each(function (iField, field) {
            cells.push( $(field).val() );
        });

        rows.push( cells.join('|') );
    });

   return rows.join(',<br>');
}

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

Логика здесь такова:

  • получить все строки /TR в таблице и пропустить их
  • получить первое значение ячейки и значение всех полей ввода и выбора в этой строке
  • присоедините эти значения и сохраните их в массиве строк
  • когда это делается, соедините все значения в массиве rows и верните их

Btw, имея это как дополнительную функцию, а не делает все это в вашем обратном вызове, позволяет легко выполнить его из другого места (например, консоль для тестирования).

  • 0
    Я добавил строку заголовка в вашу таблицу и столкнулся с проблемой. Последняя строка содержит первую ячейку столбца заголовка. Посмотрите jsbin.com/garohure/2/edit
  • 0
    Ваш ответ близок, но что, если в определенных ячейках есть другие элементы, такие как кнопка изображения и т. д. Я хотел бы получить данные только из TextBox и Dropdown. И что .val если я хочу, чтобы значение .text() вместо выпадающего .val
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню