【问题标题】:How to make parsleyjs only trigger validation on blur (for a field that has already failed validation)如何使 parsleyjs 仅在模糊时触发验证(对于验证失败的字段)
【发布时间】:2015-08-25 12:37:12
【问题描述】:

我正在试图弄清楚如何让 parsleyjs 仅触发对 已经验证失败的字段进行模糊验证。

http://jsfiddle.net/billyroebuck/zbmv2d3w/

标记:

<form id="myform">
    <label for="email">Email</label>
    <input type="email" name="email"
        data-parsley-required="true"
        data-parsley-type="email"
        data-parsley-custom
        data-parsley-trigger="blur"
    />
    <input type="submit" />
</form>

JavaScript:

window.Parsley.addValidator('custom',
function (value, requirement) {
    console.log('custom validation triggered');
    sleepFor(3000); // simulate a delay (testing only)
    if (value == 'test@test.com') {
        console.log('custom validation failed');
        return false;
    }
    console.log('custom validation passed');
    return true;
}, 32)
    .addMessage('en', 'custom', 'custom validation failed');

$('#myform').parsley();

function sleepFor(sleepDuration) {
    console.log('pretend this takes a while...');
    var now = new Date().getTime();
    while (new Date().getTime() < now + sleepDuration) { /* do nothing */
    }
}

parsleyjs 版本 2.2.0-rc1

电子邮件字段有验证规则要检查:

  • 提供了一个值,
  • 输入的值是有效的电子邮件地址,
  • 一些自定义规则(假设这是一个 AJAX 请求)

我将此字段的 parsley-trigger 属性设置为模糊。

步骤:

  • 打开控制台
  • 在上面的电子邮件字段中输入“a@b.com”,然后按 Tab
  • 注意触发了自定义验证(好)
  • 在电子邮件字段中输入“xyz”并按 Tab 键
  • 注意欧芹类型验证启动(好)
  • 在查看控制台的电子邮件字段中输入“xyz@test.com”
  • 请注意,当输入变为 有效的电子邮件(在这种情况下,当您在 .com 中按字母 c 时)vs 模糊:(

如何确保仅在无效字段的模糊事件上触发验证?

提前致谢!

【问题讨论】:

    标签: parsley.js


    【解决方案1】:

    恐怕目前没有这样的选择。我们的想法是尽快删除错误消息,并且每个人似乎都喜欢这样。

    【讨论】:

    • 感谢您的快速回复。我想我可以使用自己的模糊事件手动运行验证逻辑。有没有办法在没有欧芹验证器的情况下向字段添加自定义消息?
    • 我注意到,即使没有自定义验证器,如果您键入得非常快,有时也会跳过某些字符(例如在 firefox 中)。
    猜你喜欢
    • 1970-01-01
    • 2018-02-22
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多