Kendo 功能在 event.stopImmediatePropagation 后停止工作
Kendo functions stops working after event.stopImmediatePropagation
我想使用 Ajax.BeginForm 向我的控制器发送一个 HttpPostedFileBase。
因为我正在使用 Ajax 我需要调整我的请求以使其工作,(否则文件为空)。
我面临的问题是 kendo 函数(多选、文件输入)在我的表单中没有 reload/stops 使用 ajax 重新加载内容后工作。导致此问题的脚本正在使用
e.stopImmediatePropagation();
出于某种原因停止所有 kendo 功能,(这里没有 javascript 专家)。
多选视图:
@(Html.Kendo().MultiSelectFor(x => x.ProductModel.AddProductSubCategories)
.Name("ProductModel.AddProductSubCategories")
.HtmlAttributes(new { @class = "multi-select" })
.DataTextField("SubCategoryName")
.DataValueField("SubCategoryID")
)
脚本:
window.addEventListener("submit", function (e) {
var form = e.target;
alert($(form).attr('id'));
if (form.getAttribute("enctype") === "multipart/form-data") {
if (form.dataset.ajax && $(form).valid()) {
e.preventDefault();
e.stopImmediatePropagation();
$('.admin-add-product-message-container').remove();
AjaxLoadUp();
var xhr = new XMLHttpRequest();
xhr.open(form.method, form.action);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
if (form.dataset.ajaxUpdate) {
var updateTarget = document.querySelector(form.dataset.ajaxUpdate);
if (updateTarget) {
updateTarget.innerHTML = xhr.responseText;
}
}
}
};
xhr.send(new FormData(form));
}
}
}, true);
我尝试使用
重新加载Kendo脚本
$.getScript("myscript");
在 if (updateTarget) 中,但这并没有解决我的问题。
有什么建议吗?
谢谢
来自官方 kendo 论坛的回答:
小部件将停止工作,因为当响应设置为 innerHTML 属性 时将不会评估脚本。您可以使用 jQuery html 方法来设置响应以避免问题,例如
if (updateTarget) {
$(updateTarget).html(xhr.responseText);
}
我想使用 Ajax.BeginForm 向我的控制器发送一个 HttpPostedFileBase。
因为我正在使用 Ajax 我需要调整我的请求以使其工作,(否则文件为空)。
我面临的问题是 kendo 函数(多选、文件输入)在我的表单中没有 reload/stops 使用 ajax 重新加载内容后工作。导致此问题的脚本正在使用
e.stopImmediatePropagation();
出于某种原因停止所有 kendo 功能,(这里没有 javascript 专家)。
多选视图:
@(Html.Kendo().MultiSelectFor(x => x.ProductModel.AddProductSubCategories)
.Name("ProductModel.AddProductSubCategories")
.HtmlAttributes(new { @class = "multi-select" })
.DataTextField("SubCategoryName")
.DataValueField("SubCategoryID")
)
脚本:
window.addEventListener("submit", function (e) {
var form = e.target;
alert($(form).attr('id'));
if (form.getAttribute("enctype") === "multipart/form-data") {
if (form.dataset.ajax && $(form).valid()) {
e.preventDefault();
e.stopImmediatePropagation();
$('.admin-add-product-message-container').remove();
AjaxLoadUp();
var xhr = new XMLHttpRequest();
xhr.open(form.method, form.action);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
if (form.dataset.ajaxUpdate) {
var updateTarget = document.querySelector(form.dataset.ajaxUpdate);
if (updateTarget) {
updateTarget.innerHTML = xhr.responseText;
}
}
}
};
xhr.send(new FormData(form));
}
}
}, true);
我尝试使用
重新加载Kendo脚本$.getScript("myscript");
在 if (updateTarget) 中,但这并没有解决我的问题。
有什么建议吗? 谢谢
来自官方 kendo 论坛的回答:
小部件将停止工作,因为当响应设置为 innerHTML 属性 时将不会评估脚本。您可以使用 jQuery html 方法来设置响应以避免问题,例如
if (updateTarget) {
$(updateTarget).html(xhr.responseText);
}