Javascript JQuery-选择器仅获取剑道选项卡条中第一个网格的值

Javascript JQuery-选择器仅获取剑道选项卡条中第一个网格的值,javascript,jquery,kendo-ui,kendo-grid,kendo-asp.net-mvc,Javascript,Jquery,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,我有5个网格都放在不同的剑道标签条。我试图实现的是,当我更新时,我需要提醒用户至少选中一个复选框。但是,当我单击“编辑”时,我的选择器似乎只获取第一个网格的复选框。其他人什么也没发生 这是我的网格的第一个选项卡- <div id="tabstrip-left-A"> <ul> <li class="k-state-active"> Diagnostic </li> &l

我有5个网格都放在不同的剑道标签条。我试图实现的是,当我更新时,我需要提醒用户至少选中一个复选框。但是,当我单击“编辑”时,我的选择器似乎只获取第一个网格的复选框。其他人什么也没发生

这是我的网格的第一个选项卡-

<div id="tabstrip-left-A">
    <ul>
        <li class="k-state-active">
            Diagnostic
        </li>
        <li>
            Referrals
        </li>

    </ul>
    <div>
 <div id="tabstrip-left-B">
            <ul>
                <li class="k-state-active">
                    SubTypes
                </li>
                <li>
                    Categories
                </li>
                <li>
                    Statuses
                </li>


            </ul>
            <div>


                @*Diagnostic*@
                @(Html.Kendo().Grid<OSH.Domain.Models.TPSWork.ExcludeFrom>()
        .Name("DiagnosticGrid")
        .Columns(columns =>
        {
            columns.Command(command => { command.Edit().Text(" "); command.Destroy().Text(" "); }).Width(180);
            columns.Bound(e => e.TPSDiagExclusionID).Width(150).Hidden();

            columns.ForeignKey(p => p.OrdConceptID, (System.Collections.IEnumerable)ViewData["OrdConceptShortNameID"], "OrdConceptID", "OrdConceptShortName").Title("Order Concept").EditorTemplateName("OrdConceptID");

            columns.Bound(e => e.ExcludeFromReportlist).Width(200);
            columns.Bound(e => e.ExcludeFromWorklist).Width(200);
        })
        .ToolBar(toolbar => { toolbar.Create().Text("Add New Diagnostic Code"); })

        .Editable(editable => editable.Mode(GridEditMode.InLine))
        .Sortable()
        .Pageable()
        .Scrollable()
        .ColumnMenu()
        .Filterable()
        .HtmlAttributes(new { style = "height:520px;" })
        .DataSource(dataSource => dataSource
            .Ajax()
            .PageSize(10)
            .Model(model =>
            {
                model.Id(p => p.TPSDiagExclusionID);
            })
                    .Read(read => read.Action("ReadDiagnosticCode", "TPSAdmin").Data("FilterOrdConcept"))
                    .Create(update => update.Action("CreateDiagnosticCode", "TPSAdmin").Data("InsertAdditionalData"))
                    .Update(update => update.Action("UpdateDiagnosticCode", "TPSAdmin").Data("AdditionData"))
                    .Destroy(update => update.Action("DeleteDiagnosticCode", "TPSAdmin"))
                    .Events(events => events.Error("onError").Sync("sync_handler"))
                    )
                .Pageable(x => x.PageSizes(new List<object> { 5, 10, 15, 20, "all" }).Refresh(true))
               .Events(e => e.Edit("onDiagnosticGridEdit"))
               .Filterable(ftb => ftb
            .Extra(false)
            .Operators(operators => operators
            .ForString(str => str.Clear()
                .Contains("Contains")
                .IsEqualTo("Is equal to")
                .IsNotEqualTo("Is not equal to")
            ))
            )
    .Sortable()
    .Groupable()
    .Resizable(resize => resize.Columns(true))
    .Reorderable(reorder => reorder.Columns(true))
                )
            </div>
            <div>
                @*Categories*@
                @(Html.Kendo().Grid<OSH.Domain.Models.TPSWork.ExcludeFromDiagCategories>()
        .Name("DiagCategoriesGrid")
        .Columns(columns =>
        {
            columns.Command(command => { command.Edit().Text(" "); command.Destroy().Text(" "); }).Width(180);
            columns.Bound(e => e.ID).Width(150).Hidden();
            columns.ForeignKey(p => p.OrdCategoryID, (System.Collections.IEnumerable)ViewData["DiagCategDescID"], "OrdCategoryID", "OrdCategoryDesc").Title("Category").EditorTemplateName("OrdDiagCategID");

            columns.Bound(e => e.ExcludeFromReportList).Width(200);
            columns.Bound(e => e.ExcludeFromWorkList).Width(200);
        })
        .ToolBar(toolbar => { toolbar.Create().Text("Add New Category"); })

        .Editable(editable => editable.Mode(GridEditMode.InLine))
        .Sortable()
        .Pageable()

        .Scrollable()
        .ColumnMenu()
        .Filterable()
        .HtmlAttributes(new { style = "height:520px;" })
        .DataSource(dataSource => dataSource
            .Ajax()
            .PageSize(10)
            .Model(model =>
            {
                model.Id(p => p.OrdCategoryID);
            })
                    .Read(read => read.Action("ReadDiagCategories", "TPSAdmin").Data("FilterDiagCategories"))
                    .Create(update => update.Action("CreateDiagCategories", "TPSAdmin").Data("InsertDiagCategData"))
                    .Update(update => update.Action("UpdateDiagCategories", "TPSAdmin").Data("AdditionData"))
                    .Destroy(update => update.Action("DeleteDiagCategories", "TPSAdmin"))
                    .Events(events => events.Error("onError").Sync("sync_handler"))
                    )
                .Pageable(x => x.PageSizes(new List<object> { 5, 10, 15, 20, "all" }).Refresh(true))
               .Events(e => e.Edit("onDiagCategGridEdit"))
               .Filterable(ftb => ftb
            .Extra(false)
            .Operators(operators => operators
            .ForString(str => str.Clear()
                .Contains("Contains")
                .IsEqualTo("Is equal to")
                .IsNotEqualTo("Is not equal to")
            ))
            )
    .Sortable()
    .Groupable()
    .Resizable(resize => resize.Columns(true))
    .Reorderable(reorder => reorder.Columns(true))
                )
            </div>
            <div>
                @*Statuses*@
            @(Html.Kendo().Grid<OSH.Domain.Models.TPSWork.ExcludeFromDiagStatuses>()
        .Name("DiagStatusesGrid")
        .Columns(columns =>
        {
            columns.Command(command => { command.Edit().Text(" "); command.Destroy().Text(" "); }).Width(180);
            columns.Bound(e => e.ID).Width(150).Hidden();

            columns.ForeignKey(p => p.StatusID, (System.Collections.IEnumerable)ViewData["StatusNameID"], "StatusID", "StatusName").Title("Status Name").EditorTemplateName("DiagStatusExclusionEdit");

            columns.Bound(e => e.ExcludeFromReportList).Width(200);
            columns.Bound(e => e.ExcludeFromWorkList).Width(200);
        })
        .ToolBar(toolbar => { toolbar.Create().Text("Add New Status Type"); })

        .Editable(editable => editable.Mode(GridEditMode.InLine))
        .Sortable()
        .Pageable()
        .Scrollable()
        .ColumnMenu()
        .Filterable()
        .HtmlAttributes(new { style = "height:520px;" })
        .DataSource(dataSource => dataSource
            .Ajax()
            .PageSize(10)
            .Model(model =>
            {
                model.Id(p => p.ID);
            })
                    .Read(read => read.Action("ReadDiagStatuses", "TPSAdmin").Data("FilterDiagStatuses"))
                    .Create(update => update.Action("CreateDiagStatus", "TPSAdmin").Data("InsertDiagStatusData"))
                    .Update(update => update.Action("UpdateDiagStatus", "TPSAdmin").Data("AdditionData"))
                    .Destroy(update => update.Action("DeleteDiagStatus", "TPSAdmin"))
                    .Events(events => events.Error("onError").Sync("sync_handler"))
                    )
                .Pageable(x => x.PageSizes(new List<object> { 5, 10, 15, 20, "all" }).Refresh(true))
               .Events(e => e.Edit("onDiagnosticStatusEdit"))
               .Filterable(ftb => ftb
            .Extra(false)
            .Operators(operators => operators
            .ForString(str => str.Clear()
                .Contains("Contains")
                .IsEqualTo("Is equal to")
                .IsNotEqualTo("Is not equal to")
            ))
            )
    .Sortable()
    .Groupable()
    .Resizable(resize => resize.Columns(true))
    .Reorderable(reorder => reorder.Columns(true))
            )
        </div>
    </div>
这仅在单击“更新”时提供第一个网格的复选框值。但对于其他选项卡,什么都没有发生。这就是让我陷入困境的部分

谢谢


这是因为实际上只得到第一个网格:

var grid = $("table[role='grid'").data("kendoGrid");
上面的代码-除了输入错误-只返回第一个网格,即使选择器匹配多个元素

尝试一个循环:

function AdditionData() {
    var checkBoxes = true;

    $("table[role='grid']").each(function() {
        var subCheckBoxes = false,
            grid = $(this).closest(".k-grid"); // Get the real grid wrapper element

        $("input[name='ExcludeFromReportlist'][type='hidden'], input[name='ExcludeFromWorklist'][type='hidden']", grid).each(function() {               
            if (!$(this).is(":checked")) {
                // If ANY checkbox is checked, then it is valid.
                subCheckBoxes = true;
                return false; // Exits loop
            }
        });

        // If ANY grid has no checkboxes checked, then it is invalid.
        if (!subCheckBoxes) {
            checkBoxes = false;
            return false; // Exits loop
        }
    });

    if (!checkBoxes) {
        alert("One checkbox must be checked.")
        return;
    }
    else {
        return {
            OrdConceptIDData: $("#OrdConceptID").val(),
            OrdCategoryIDData: $("#OrdDiagCategID").val(),
            DiagStatusID: $('#StatusID').val(),
            RefAuthTypeID: $("#ReferralAuthorizationTypeID").val(),
            RefStatusIDData: $("#ReferralAuthorizationStatusID").val(),
            RefSubTypeIDData: $("#SpecialtyID").val()
        }
    }
}

此外,用于检查复选框是否已选中

你的编辑按钮在哪里?你所有的网格都有不同的id吗?@Keith你看到它在哪里写着Column.Edit““。这就是更新选项所在的位置。因此,当您单击“更新”时,它将自动呈现ExcludeFromReportList和WorkList字段的复选框,因为它们是布尔值。是的,所有网格都有不同的id。您是否尝试使用JavaScript获取值?因此您已经调试了JavaScript,并且没有点击that函数或它返回了错误的值?在我看来,这可能与选项卡的加载方式有关。当您通过AJAX更改DOM时,插入的部分的事件将丢失。这适用于所有网格,但现在发生的情况是,如果一个复选框被选中,而另一个复选框未被选中,则仍然会显示一个ch必须选中复选框。
function AdditionData() {
    var checkBoxes = true;

    $("table[role='grid']").each(function() {
        var subCheckBoxes = false,
            grid = $(this).closest(".k-grid"); // Get the real grid wrapper element

        $("input[name='ExcludeFromReportlist'][type='hidden'], input[name='ExcludeFromWorklist'][type='hidden']", grid).each(function() {               
            if (!$(this).is(":checked")) {
                // If ANY checkbox is checked, then it is valid.
                subCheckBoxes = true;
                return false; // Exits loop
            }
        });

        // If ANY grid has no checkboxes checked, then it is invalid.
        if (!subCheckBoxes) {
            checkBoxes = false;
            return false; // Exits loop
        }
    });

    if (!checkBoxes) {
        alert("One checkbox must be checked.")
        return;
    }
    else {
        return {
            OrdConceptIDData: $("#OrdConceptID").val(),
            OrdCategoryIDData: $("#OrdDiagCategID").val(),
            DiagStatusID: $('#StatusID').val(),
            RefAuthTypeID: $("#ReferralAuthorizationTypeID").val(),
            RefStatusIDData: $("#ReferralAuthorizationStatusID").val(),
            RefSubTypeIDData: $("#SpecialtyID").val()
        }
    }
}