KendoUI Alert点击确定按钮执行自定义操作的报错解决方法
KendoUI Alert点击确定执行自定义操作的解决方案
你遇到的then不是函数错误,是因为部分KendoUI版本中kendo.alert()并不返回Promise对象,因此无法通过.then()链式调用后续操作。以下是两种可行的实现方案:
方案一:使用KendoDialog组件(推荐)
直接使用更灵活的Dialog组件替代原生Alert,可直接配置确定按钮的点击回调,无需依赖DOM操作:
// 初始化自定义提示框并打开 $("#custom-alert").kendoDialog({ title: "提示", content: "Hello ", actions: [ { text: "确定", primary: true, action: function() { // 点击确定后执行自定义操作 window.location = 'https://www.google.com/'; return true; // 关闭对话框 } } ] }).data("kendoDialog").open();
方案二:监听Alert生成的Dialog事件
如果坚持使用kendo.alert(),可以通过监听其生成的Dialog组件的关闭事件或按钮点击事件来实现:
方式1:监听Dialog关闭事件
// 调用Alert kendo.alert("Hello "); // 延迟绑定事件(等待Alert的Dialog渲染完成) setTimeout(function() { const dialog = $(".k-dialog").data("kendoDialog"); dialog.bind("close", function() { // 执行自定义操作 window.location = 'https://www.google.com/'; // 解绑事件避免重复触发 dialog.unbind("close"); }); }, 100);
方式2:绑定确定按钮点击事件
kendo.alert("Hello "); setTimeout(function() { // 定位Alert的确定按钮并绑定点击事件 $(".k-dialog .k-primary").on("click", function() { window.location = 'https://www.google.com/'; $(this).off("click"); }); }, 100);
注意:使用定时器是因为kendo.alert()是异步渲染DOM元素,需要等待对话框生成后再绑定事件。
内容的提问来源于stack exchange,提问作者iDipa
相关产品推荐
相关产品推荐

