0

kendoUI オートコンプリートを使用しています。各レコードを「x」マークの付いたボックス形式で表示するには、次のように実装しました

$("#roleAuto").kendoAutoComplete({
                       dataSource: roledata,
                       filter: "startswith",
                       placeholder: "Select Role...",
                       select: function (e, ui) {
                           alert("hi");
                           $(".roleSelection:checked").each(function () {
                               var role = $(this).attr("data-name"),
                                     var  span = $("<span>").text(role),
                                        a = $("<a>").addClass("remove").attr({
                                        title: "Remove " + role
                                        }).text("x").appendTo(span);
                               alert(role);
                               span.insertBefore("#roleAuto");
                                $("#Roles").click(function () {
                                 $("#roleAuto").focus();
                                 });
             $(".remove", document.getElementById("Roles")).live("click", function () {
                     $(this).parent().remove();
                     if ($("#Roles span").length === 0) {
                     $("#roleAuto").css("top", 0);
                           }
                       });
                   });

ボックス内の各レコードを「x」記号で表示できます。「x」マークをクリックすると、レコードを削除できます。削除されたアイテム ID 値が必要です。どうすればこれを入手できますか?

4

1 に答える 1

1

オートコンプリート (および他の多くのデータバインドされたウィジェット) のメソッドがあります。

kendo.ui.widget.dataItem(index);

そして、呼び出されたイベントのメソッド:

event.item.index();

AutoComplete メソッドのドキュメント: AutoComplete Documentation

したがって、select 関数の最初の行として、次のように書くことができます。

var dataItem = this.dataItem(e.item.index());

クリック イベントのライブ メソッドは次のようになります。

$(".remove", document.getElementById("Roles")).live("click", function () {
    alert(dataItem.Id); //Or in whichever property your Id is stored.
    $(this).parent().remove();
    if ($("#Roles span").length === 0) {
        $("#roleAuto").css("top", 0);
    }
});
于 2012-10-17T07:32:30.927 に答える