【问题标题】:kendo ui get id of checkbox when unchecked未选中时,kendo ui获取复选框的ID
【发布时间】:2013-06-17 06:27:26
【问题描述】:

我正在使用带有复选框的剑道 UI 树视图

当它被取消选中时,我想要复选框的 id

这是剑道用户界面代码

// var homogeneous contains data

$("#treeview").kendoTreeView({
    checkboxes: {
        checkChildren: false,
        template:"# if(!item.hasChildren){# <input type='hidden' id='#=item.id#' parent_id='#=item.parent_id#' d_text='#=item.value#'/> <input type='checkbox' id_a='#= item.id #' name='c_#= item.id #' value='true' />#}else{# <div id='#=item.id#' style='display:none;' parent_id='#=item.parent_id#' d_text='#=item.value#'/> #}#",

    },
    dataSource: homogeneous,
    dataBound: ondata,
    dataTextField: "value"
});

function ondata() {
   //alert("databound");
}   


// function that gathers IDs of checked nodes
function checkedNodeIds(nodes, checkedNodes) {
    //console.log(nodes);
    for (var i = 0; i < nodes.length; i++) {
        if (nodes[i].checked) {
            checkedNodes.push(nodes[i].id);
        }

        if (nodes[i].hasChildren) {
            checkedNodeIds(nodes[i].children.view(), checkedNodes);
        }
    }
}

// show checked node IDs on datasource change
$("#treeview").data("kendoTreeView").dataSource.bind("change", function() {
    var checkedNodes = [],
        treeView = $("#treeview").data("kendoTreeView"),
        message;

    checkedNodeIds(treeView.dataSource.view(), checkedNodes);
    if (checkedNodes.length > 0) {
        message = "IDs of checked nodes: " + checkedNodes.join(",");
    } else {
        message = "No nodes checked.";
    }

    $("#result").html(message);
});

在这段代码中,当未选中复选框时,我没有得到复选框的 ID,所以我尝试了这个 jquery代码

$('input[type=checkbox]').click(function() {
    if($(this).is(':checked')) {
       alert('checked');
    } else {
        alert('not checked');
    }
});

此代码仅适用于 js fiddle,但不适用于我的情况 http://jsfiddle.net/NPUeL/

如果我使用此代码,那么我可以获得计数但我不知道如何使用它

    var treeview = $("[data-role=treeview]").data("kendoTreeView");
    treeview.dataSource.bind("change", function (e) {
        if (e.field == "checked") {
            console.log("Recorded Selected: " + $("[data-role=treeview] :checked").length);
        }
    });

我需要在数据源中进行哪些更改,以便获取 id 提前感谢

【问题讨论】:

    标签: checkbox kendo-ui kendo-treeview


    【解决方案1】:

    如果你想获得id,你可以这样做:

    $('input[type=checkbox]').click(function (e) {
        var li = $(e.target).closest("li");
        var id = $("input:hidden", li).attr("id");
        var node = treeView.dataSource.get(id);
        if (node.checked) {
            console.log('checked');
        } else {
            console.log('not checked');
        }
    });
    

    我在事件处理程序中所做的是:

    1. 找到最近的li元素,它是被点击的树的节点。
    2. id 位于 HTML input 元素中,即 hidden(据我了解,您存储它的方式是这样)。
    3. 使用dataSource.get 方法从dataSource 获取项目。

    查看修改并运行的代码here

    【讨论】:

      【解决方案2】:

      我做了一点小改动,现在可以使用了

          function ondata() {
         $('input[type=checkbox]').click(function() {
          if($(this).is(':checked')) {
             alert('checked');
          } else {
              alert('not checked');
          }
        });
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-15
        • 1970-01-01
        • 2011-10-17
        • 1970-01-01
        • 1970-01-01
        • 2018-08-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多