gpt4 book ai didi

jquery - 动态部分 View + jquery 表单劫持 + 客户端验证 = 不起作用

转载 作者:行者123 更新时间:2023-12-03 22:56:38 26 4
gpt4 key购买 nike

我使用 MVC 3 和不显眼的 javascript 进行客户端验证。

我有一个表格,其中的行可以单击。单击时我想调出动态加载的部分 View 。这是此操作的代码:

function GetStuff(id) {
$.ajax(
{
url: "Edit/" + id,
success: function (result) {
$("#DivTest").html(result);
}
});
}

到目前为止一切正常。问题是当我尝试使用 jquery 在部分中保存某些内容时。表单被劫持,如下所示:

$(function () {
$.post($(this).attr("action"),
$(this).serialize(),
function (data) {
alert("test");
});
e.preventDefault();
});

这一切都使得客户端验证无法工作。即使我遗漏了一些必需的值,它也会使帖子成为可能。如果我不使用 ajax 来发布或者在页面加载时加载部分内容(不是动态的),那么这一切都有效。

<小时/>

我尝试过的:

我尝试将其放在帖子之前:

if($('form').validate().form()){
...
}

这每次都返回 true..

从这篇文章中我得到了 2 个建议 ASP.NET MVC 2 loading partial view using jQuery - no client side validation

添加

Sys.Mvc.FormContext._Application_Load(); 

部分加载后..并将帖子的数据类型设置为“html”。都不起作用。

我也尝试过这个方法,但没有成功: http://www.deepcode.co.uk/2010/08/mvc-ootb-validation-when-pulling-in.html

我猜这种技术组合很常见,为什么让它发挥作用这么难?非常感谢任何帮助。谢谢

最佳答案

成功使用ajax加载新表单后,您必须通过手动调用来指示不显眼的验证库解析新表单:

// insert new form into the DOM first, then call:
$.validator.unobtrusive.parse('<form selector>'));
$('<form selector>').validate(); // start validating

这根据表单子(monad)元素中的 data-xxx 属性设置 jquery.validation 验证器。

之后调用$('<form selector>').validate().form()应该按预期工作!

关于jquery - 动态部分 View + jquery 表单劫持 + 客户端验证 = 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4968575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com