我在提交时遇到jquery的.valid()函数的奇怪问题。 Jquery在提交时自然地调用了这个,但是我已经提取了jquery的确切函数调用,导致了下面的问题
$("#validateMe").click(function () {
alert($("form").valid());
});
这是一个问题的原因是因为它不断为每个输入调用偏移宽度/偏移高度,包括我的复选框。
复选框由以下人员生成:
for (int i = 0; i < Model.CategoryViewModel.ChildCategoryNodes.Count(); i++)
{
if (Model.CategoryViewModel.ChildCategoryNodes[i].Selected)
{
@Html.HiddenFor(model => model.CategoryViewModel.ChildCategoryNodes[i].PbMajor)
@Html.HiddenFor(model => model.CategoryViewModel.ChildCategoryNodes[i].PbHeading)
<label>
@Html.CheckBoxFor(model => model.CategoryViewModel.ChildCategoryNodes[i].Selected, new Dictionary<string, object> { { "data-pbmajor", Model.CategoryViewModel.ChildCategoryNodes[i].PbMajor }, { "data-pbheading", Model.CategoryViewModel.ChildCategoryNodes[i].PbHeading } })
@Model.CategoryViewModel.ChildCategoryNodes[i].PbMajor
@Model.CategoryViewModel.ChildCategoryNodes[i].PbHeading
</label>
}
}
以offsetWidth和offsetHeight形式检查每个单独的输入。通常,如果形状非常小,这无关紧要,但我有&lt; 2000个复选框被加载到页面上。虽然在页面时间内用户体验总体上很慢,但有很多。
为解决此问题或修复我的代码的任何答案都会有所帮助!
答案 0 :(得分:1)
众所周知,jQuery会以非常大的形式减速。请参阅jQuery validate large forms - script running slowly和Long form using jquery Validate causes IE slow script warning。
你有几个选择。我按此顺序接近他们:
自定义或覆盖jQuery的默认验证功能。以上2个答案给出了一些例子,以及这个答案:Custom method with jQuery Validation plugin
分页表格。你真的需要在一张表格上有~2000个复选框吗?有没有办法将其拆分成多个页面?
在服务器端验证。如果您的应用程序逻辑支持它,即使无效也允许提交表单,在服务器端运行验证逻辑,然后在必要时返回包含任何验证消息的页面。