【问题标题】:Validate prefilled jQuery form (invalidate on first field clear, ASP.NET and unobtrustive)验证预填充的 jQuery 表单(在第一个字段清除时无效,ASP.NET 和不引人注目)
【发布时间】:2011-06-08 15:32:21
【问题描述】:

我有一个可以填写、保存、加载和重新编辑的表单。

当它被加载并重新编辑时,它可能会开始有效的生命周期。 当一个字段在加载时有效时,我希望它在违反规则进行编辑时立即失效。简而言之,这是我的问题,我怀疑某些配置选项支持我不能找到。


目前,它仅在以下情况下才能正常工作(上述所需方式):1)它被编辑,2)然后该字段在有效时失去焦点,3)然后再次编辑它。因此,为了可视化预填表单的错误,需要额外有效地失去焦点。

如果加载时为空(例如第一次访问),则不应显示错误。

我已经在我的框架中使用了以下内容:

  • jQuery.validate(“已批准”,也是我问题的重点)
  • 用于 ASP.NET MVC 3 的 jQuery 不显眼的验证适配器

我目前没有运行任何自定义代码来激活此功能,因为“不显眼”适配器会初始化验证(但我很乐意修复此问题)。我尝试在页面加载时添加“form.valid()”,但它并不能解决上述问题,实际上会破坏更多内容。

谢谢, 香农

【问题讨论】:

标签: jquery asp.net-mvc jquery-validate unobtrusive-validation


【解决方案1】:

我已经深入研究了验证插件,并为我认为存在缺陷的问题开了一张票。

https://github.com/jzaefferer/jquery-validation/issues/146

香农

【讨论】:

  • 请注意,我还在缺陷帖子中发布了用于解决问题的代码。
【解决方案2】:

您可以尝试在每次更改输入时手动验证表单。

$(":input").live("change", function(){
    form.validate();
})

从查看文档看来,如果不先调用 form.validate();,就无法调用 form.valid()

【讨论】:

  • 查看代码,如果 validate() 尚未被调用,valid 将调用 validate() 而不是在第一次调用时实际执行典型的 valid() 操作。
  • 不幸的是,我发现我遇到的主要问题是用于确定是否对 keyup 进行验证的逻辑。它应该防止令人讨厌的验证错误(嘿!我刚开始打字,我知道我还没有输入足够的字符!!!)。但是,在您深入研究代码中的“lastElement”逻辑之前,它的组合很差,最终看起来是不确定的。您的建议解决了部分问题,但是,如果仅在完全已知有效的表单上运行,那么我将标记为接受。注意,jQuery 'delegate' 可能比'live' 更受欢迎。
【解决方案3】:

这个构造函数对我有用:

$('form').validate({
    onfocusout: function(element) {
       this.element(element);
    }, ...
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 2021-06-30
    • 1970-01-01
    • 2013-08-30
    相关资源
    最近更新 更多