【问题标题】:parsley.js catching all errors and outputting via a javascript alert()parsley.js 捕获所有错误并通过 javascript alert() 输出
【发布时间】:2018-01-23 19:19:05
【问题描述】:

我想在单个事件中使用 pasley v2.8 捕获表单上的所有错误,然后通过标准 javascript 警报显示这些错误。

感谢这个 SO question about the fieldinstance functionality 的帮助,我之前已经完成了部分工作。但是,其他问题中的代码适用于每个表单元素都失败时调用的函数。

我想要的是在整理完所有错误后只触发一次的事件。我相信这是通过最近的 form:error 事件完成的。由于 getErrorsMessages() 似乎不起作用,我制作的代码不起作用。到目前为止我所拥有的是......

$('#form').parsley().on('form:error', function (formInstance) {
    var errorMsg = ParsleyUI.getErrorsMessages(formInstance);
    alert(errorMsg);
});

【问题讨论】:

    标签: jquery parsley.js


    【解决方案1】:

    使用formInstance 循环遍历每个字段并检索错误消息。像这样

    <form class="demo-form">
        <input type="text" name="field1" required />
        <input type="text" name="field2" required />
        <input type="submit" />
    </form>
    
    <script>
    $(function () {
        $('.demo-form').parsley().on('form:error', function (formInstance) {
            var errors = [];
    
            // You have access to each field instance with `formInstance.fields`
            for (var idx in formInstance.fields) {
                errors.push((formInstance.fields[idx].getErrorsMessages()));
    
                // Use $element to access the jQuery element of each field
                console.log(formInstance.fields[idx].$element);
            }
    
            alert(errors);
        });
    });
    </script>
    

    如果您想删除 Parsley 自动显示的每个字段旁边的消息,您可以在表单中添加以下属性:data-parsley-errors-messages-disabled。见this answer

    【讨论】:

    • 非常感谢!只是检查一下,访问输入字段名称,你知道这是怎么做的吗?目前我只收到错误消息,但这不包括字段名称。
    • @AdamJones 检查更新的答案。 formInstance.fields[id] 将返回 Parsley 的 fieldInstance。该对象有一个 $element 属性,它是 jQuery 元素。因此,您可以使用formInstance.fields[0].$element.attr('name') 访问任何 DOM 属性
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    • 2015-10-29
    • 2018-08-28
    • 1970-01-01
    • 2018-08-10
    • 2022-01-17
    相关资源
    最近更新 更多