【问题标题】:jQuery validation, NOT the normal pluginjQuery 验证,不是普通的插件
【发布时间】:2014-05-04 02:13:04
【问题描述】:

我一直在查看 jQuery Validation Plugin,这似乎有点矫枉过正(我的网站的脚本要求正在激增),而且也不是我想要的。

让我定义一些术语:<input type="text"> 字段的状态如果同时匹配 RegEx 1 和 RegEx 2,则为 VALID,如果匹配 RegEx 1 但不匹配 RegEx 2,则为 PARTIAL,如果不匹配 RegEx 1,则为 INVALID。

例如,RegEx 1 可以是/^[A-Z_]*$/,RegEx 2 可以是/^[A-Z]+(_[A-Z]+)*$/

要求是:

  • 任何会导致无效状态的按键都会被忽略,不会影响焦点或插入符号的位置,也不会看到值发生变化
  • 否则状态会在每次按键后更新为 VALID 或 PARTIAL,并且
  • 只要输入的状态发生变化,就会调用回调。

看起来很简单。这基本上就是 QStringValidator 模型。

我有 jQuery 核心,但我是新手。我该如何实施?谢谢。

附:如果最好的解决方案在 jQuery 之外,则不需要 IE 支持。

【问题讨论】:

    标签: javascript jquery html forms validation


    【解决方案1】:
    if (this.value.match(this.getAttribute('data-regex1')) {
        if (this.value.match(this.getAttribute('data-regex2')) {
            do_whatever_for_full();
        } else {
            do_whatever_for_partial();
        }
    } else {
        do_whatever_for_invalid();
    }
    

    将您的正则表达式作为自定义属性(data-regex1,data-regex2)放入元素中,然后在数据更改时检查数据(不确定要检查多少事件,但您可能必须使用 onkeydown 进行检查,忽略输入和选项卡,或者您可以创建一个计时器 onfocus 并每隔半秒左右检查一次)。

    【讨论】:

    • 恐怕你掩盖的那一点——事件——正是问题是关于什么的。
    • 这个帖子有你要找的事件:stackoverflow.com/questions/574941/…
    • 您可以使用要测试的每个输入创建一个数组并使用 input_element.addEventListener('keydown',function(){function_name.call(input_element);},false);跨度>
    • 从头开始更新忽略输入键:jsfiddle.net/9hhAT/2
    猜你喜欢
    • 2017-06-16
    • 2018-02-25
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    相关资源
    最近更新 更多