【问题标题】:Delete Confirmation Window删除确认窗口
【发布时间】:2015-06-09 07:11:33
【问题描述】:
<div id="modalWindow">
    <button id="yes" class="k-button">Yes</button>
    <button id="no" class="k-button">No</button>
</div>
<script>
var wnd;
$(document).ready(function() {
    wnd = $("#modalWindow").kendoWindow({
        title: "Delete confirmation",
        modal: true,
        visible: false,
        resizable: false,
        width: 300
    }).data("kendoWindow");

});

function DeleteItem(e) {
    e.preventDefault();

    var grid = this;
    var row = $(e.currentTarget).closest("tr");
    wnd.center().open();

    $("#yes").click(function() {
        grid.removeRow(row);
        wnd.close();
    });

    $("#no").click(function() {
        wnd.close();
    });
}
</script>

你好,

我正在使用带有自定义按钮列的 Telerik Grid,该按钮列会打开一个窗口以确认删除相关行。 当我单击一行的按钮并确认删除时,它可以正常工作。 当我单击一行的按钮时,取消删除,然后单击另一行的另一个按钮并提交删除它删除网格的每一行。

我能做些什么来解决这个问题?

问候

【问题讨论】:

  • 尝试在wnd.close() 之后在no 点击后返回false!!
  • 提供一个js-fiddle?
  • 每次打开窗口时都会重新绑定click 事件。实际上它不是重新绑定,而是重新添加相同的事件处理程序。这意味着在第二个 click 事件中,您将调用句柄两次,第三次,三次等等。

标签: jquery asp.net-mvc asp.net-mvc-4 telerik


【解决方案1】:

每次调用DeleteItem 函数时,您都在为#yes 按钮设置处理程序以删除特定行。即使您取消并选择了不同的行,处理程序也已设置好,并将在以后单击该按钮时运行。

为避免这种情况,您应该在设置新的之前清除之前设置的点击事件处理程序:

function DeleteItem(e) {
    e.preventDefault();

    var grid = this;
    var row = $(e.currentTarget).closest("tr");
    wnd.center().open();

    $("#yes").unbind('click').click(function () {
        grid.removeRow(row);
        wnd.close();
    });

    $("#no").unbind('click').click(function () {
        wnd.close();
    });
}  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多