【问题标题】:jquery .valid() validating all offsetsjquery .valid() 验证所有偏移量
【发布时间】:2015-01-21 14:43:01
【问题描述】:

我在提交时遇到了 jquery 的 .valid() 函数的奇怪问题。 Jquery 自然会在 from submit 上调用它,但我已经提取了 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 形式的每个单独的输入。通常,如果表单非常小,这并不重要,但我有

任何解决方法或修复我的代码的答案都会有所帮助!

【问题讨论】:

  • 在服务器而不是客户端上进行验证是一种选择吗?

标签: javascript jquery html forms jquery-validate


【解决方案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 个复选框吗?有没有办法把它分成多个页面?

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

【讨论】:

  • 我想我可以尝试混合使用这些。不幸的是,我确实需要将所有 2000 个都放在同一页面上(业务需求)。
  • 对为此使用 HTML5 输入验证器有什么想法吗?
  • @Richard 我对 HTML5 输入验证没有任何经验,因为我以前没有使用过它。其他人也许可以对此有所了解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 2020-08-16
相关资源
最近更新 更多