jquery .valid()验证所有偏移量

时间:2015-01-21 14:43:02

标签: javascript jquery html forms jquery-validate

我在提交时遇到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个复选框被加载到页面上。虽然在页面时间内用户体验总体上很慢,但有很多。

Bad Loading Time

为解决此问题或修复我的代码的任何答案都会有所帮助!

1 个答案:

答案 0 :(得分:1)

众所周知,jQuery会以非常大的形式减速。请参阅jQuery validate large forms - script running slowlyLong form using jquery Validate causes IE slow script warning

你有几个选择。我按此顺序接近他们:

  • 自定义或覆盖jQuery的默认验证功能。以上2个答案给出了一些例子,以及这个答案:Custom method with jQuery Validation plugin

  • 分页表格。你真的需要在一张表格上有~2000个复选框吗?有没有办法将其拆分成多个页面?

  • 在服务器端验证。如果您的应用程序逻辑支持它,即使无效也允许提交表单,在服务器端运行验证逻辑,然后在必要时返回包含任何验证消息的页面。