Как найти отмеченное состояние одного флажка в WebGrid

Вот мой WebGrid со столбцом флажка с id = chkbox1:

@grid.GetHtml(htmlAttributes:=New With {.id = "grid", .class = "table table-bordered table-striped table-condensed", .name = "grid1"},
                            emptyRowCellValue: = "No Records Found",
                            headerStyle: = "grid-header",
                            columns:=grid.Columns(
                            grid.Column(header: = "Select", format:=Function() Html.CheckBox("chkboxname", htmlAttributes:=New With {.id = "chkbox1", .value = "Item"})),
                            grid.Column("item_id", "Item ID"),
                            grid.Column("item_desc", "Description")))

Вот мои функции для превращения WebGrid в объект json:

<script>
                document.getElementById("btnGetRows").addEventListener("click", getTableData);

                function getTableData() {
                    //debugger;
                    var _griddata = gridTojson();
                    var url = '@Url.Action("GetGridViewRows")';
                    alert(_griddata);
                    $.ajax({
                        url: url,
                        type: 'POST',
                        data: { griddata: _griddata }
                    }).done(function (data) {
                        if (data != "") {
                            $('#grid').html(data);
                        }
                    });
                }

                function gridTojson() {
                    var json = '{';
                    var otArr = [];

                    var tbl2 = $('#grid tbody tr').each(function (i) {
                        var chkbox2 = $("#chkbox1").is(":checked");
                        //var chkbox = document.getElementById("chkbox1"); //tried this too
                        if ($(this)[0].rowIndex != 0) {
                            if (chkbox2) {
                                x = $(this).children();
                                var itArr = [];
                                x.each(function () {
                                    if ($(this).children('input').length > 0) {
                                        itArr.push('"' + $(this).children('input').val() + '"');
                                    }
                                    else {
                                        itArr.push('"' + $(this).text() + '"');
                                    }
                                });
                                otArr.push('"Row' + i + '": [' + itArr.join(',') + ']');
                            }
                        }
                    })
                    json += otArr.join(",") + '}'
                    return json;
                }
            </script>

Что я хочу сделать, так это выполнить цикл и получить все строки, для которых установлен флажок, и сохранить данные строки в объекте json. Если я отмечу все флажки в WebGrid, утверждение «если» станет истинным. Несмотря на то, что флажки имеют один и тот же идентификатор, разве он не должен работать, поскольку var chkbox2 = $("#chkbox1").is(":checked") находится в цикле и сбрасывает его каждый раз?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
163
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хитрость заключалась в следующем:

                           if ($(this).find("td").children().is(":checked")) {
                                x.each(function () {
                                    if ($(this).children('input').length > 0) {
                                        itArr.push('"' + $(this).children('input').val() + '"');
                                    }
                                    else {
                                        itArr.push('"' + $(this).text() + '"');
                                    }
                                });
                            }

вместо этого:

                    var chkbox2 = $("#chkbox1").is(":checked");
                    if ($(this)[0].rowIndex != 0) {
                        if (chkbox2) {
                            x = $(this).children();
                            var itArr = [];
                            x.each(function () {
                                if ($(this).children('input').length > 0) {
                                    itArr.push('"' + $(this).children('input').val() + '"');
                                }
                                else {
                                    itArr.push('"' + $(this).text() + '"');
                                }
                            });
                            otArr.push('"Row' + i + '": [' + itArr.join(',') + ']');
                        }
                    }

Другие вопросы по теме