【问题标题】:jQuery plugin Validate : revalidate as typing / mouse focusjQuery插件验证:重新验证为打字/鼠标焦点
【发布时间】:2012-06-07 19:17:13
【问题描述】:

我有一个基于 jQuery 文档的验证演示的表单:http://jsfiddle.net/ABbDS/1/。点击提交或回车确实会验证它。

我如何使 tab / 改变鼠标焦点 / 打字也有效? (所以他们立即知道电子邮件是

它基于:http://jquery.bassistance.de/validate/demo/milk/(执行此操作)和http://docs.jquery.com/Plugins/Validation/

点击下一个元素或点击标签时,我的没有验证。 我发现的答案没有使用validate 插件。

编辑:这是正确的答案吗? :https://stackoverflow.com/a/9381803/341744 $(this).valid() 会调用 validate() 的函数吗?

【问题讨论】:

  • 是的,我相信您可以从该帖子中得到答案
  • 您没有正确使用 jsFiddle。您已经包含了 jQuery 两次。资源被添加到左侧,而不是 HTML 面板中。见:jsfiddle.net/ABbDS/6

标签: jquery html forms jquery-plugins jquery-validate


【解决方案1】:

关于 onfocusout 和 onkeyup 的documentation on the jquery site 有点误导。它指出 onfocusout 和 onkeyup 是布尔值,这会让您相信您可以将它们的值设置为 true 或 false。错误的!您应该只将它们设置为 false。如果将它们的值设置为 true,则会出现此错误

Uncaught TypeError: Object true has no method 'call'

这是因为默认的 onfocusout 和 onkeyup 是函数而不是布尔值。如果将值设置为 false,则不会调用该函数,但如果设置为 true,则会出现 javascript 错误。这种类型的编程对于像我这样习惯于强类型的程序员来说很难适应,但非常聪明。

没有理由将 onfocusout 设置为 true,因为默认行为是在失去焦点时进行验证,因此只需删除代码中的这两行

// remove these lines
// onfocusout:true,  
// onkeyup: true

【讨论】:

    【解决方案2】:

    您可以将quite a few events 添加到可能对您有所帮助的验证器选项中。

    例子:

    onkeyup

    在 keyup 上验证元素。只要该字段未标记为 无效,没有任何反应。否则,将检查每个键的所有规则 up 事件。

    $(".selector").validate({
       onkeyup: true
    });
    

    【讨论】:

    • 它似乎不像引用的那样工作。在我使该字段无效并显示消息后,它仍然不会在按键时更新。直到我点击提交或回车。 -- 以及如何将您的代码与我的变量“验证器”集成?
    猜你喜欢
    • 1970-01-01
    • 2011-04-01
    • 2011-05-25
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多