在我的mvc应用程序中,我有一个网格弹出窗口,其中包含处理向表单添加描述的代码,它是这样的:
在我的网格弹出窗口中,单击按钮打开一个新的弹出窗口以输入说明:
$("#SendDescription").data("kendoWindow").center().open();
窗口本身在我的网格窗口前正确打开,聚焦:
<div role="dialog" id="SendDescription" data-role="window">...</div>
窗口定义:
@(Html.Kendo().Window().Name("SendDescription").Title(Title).Content(@<Text>
<span>@Html.Label("Enter your description here")</span>
@(Html.Kendo().Editor()
.Name("MyEditor")
.Tools(tools => tools.Clear())
)
<br />
@(Html.Kendo().Button().Name("btnSendDescription").SpriteCssClass("classname").Content("Save").Enable(true).HtmlAttributes(new { style = "float:right;" }))
</Text>).Events(e => e.Activate("focusMyEditor")).Actions(action => action.Close()).Visible(false).Iframe(true).Modal(false))
function focusMyEditor() {
$("#MyEditor").data("kendoEditor").focus();
}
每当保存描述的验证失败时,都会调用MyAlert函数:
function MyAlert(message) {
if (!document.getElementById('myAlertDialogBox')) {
$('body').append('<div id="myAlertDialogBox"><div id="msgd" style="overflow-wrap:break-word; overflow-y:auto"><p id="myAlertMessage"/></div></div>');
var popup = $("#myAlertDialogBox");
popup.kendoWindow({
title: "Title",
draggable: false,
modal: true,
visible: false,
height: "100px",
width: "100px",
autoFocus: true,
actions: []
})
.data("kendoWindow").center()
.element.append('<div style="position:absolute; "><input type="button" id="alertclicked" name="alertclicked" value="ok" autofocus></div>');
$("#alertMsg").text(message);
$("#alertclicked").bind("click", function () {
popup.hide(); $(#myAlertDialogBox).data("kendoWindow").close(); $('#myAlertMessage').remove(); $('#myAlertDialogBox').remove();
});
$(#myAlertDialogBox).data("kendoWindow").open();;
}
问题是,当我在'myAlertDialogBox'上单击'确定'时,对话框关闭,但是我添加描述的弹出窗口失去焦点并且在我的网格弹出窗口后面“。我认为这可能是由于alertclicked事件或我的一些警报弹出属性。我在jquery中尝试了多个东西,以防止'myAlertDialogBox'失去焦点,但根本没有成功。任何人都可以建议用上面的代码拧干什么?如果我使用标准的Javascript“alert”,那么在'myAlertDialogBox'上单击'ok'后,'myAlertDialogBox'会停留在其他窗口之前。提前感谢任何建议!