javascript - 使用 Parsley.js 时出现重复字段错误

标签 javascript parsley.js

当表单输入未经验证时,我试图将错误消息列表输出到控制台。我正在使用 parsley.js。

这是我正在使用的 JavaScript。这可行,但我得到每个错误的重复,并且我不确定是什么原因导致的?

(document).ready(function() {
    $("#demo-form").parsley();
    // listen for error messages
    $.listen('parsley:field:error', function(fieldInstance){
        // get error messages
        ParsleyUI.getErrorsMessages(fieldInstance);
        // Log error messages to console using input id to identify
        console.log(fieldInstance.$element.attr('id'));
    });
});

** 更新 **

根据要求,我给出了一个可行的示例。我有一个脚本将 console.log 输出到屏幕顶部的 div 中,由于某种原因我无法让它在 JSFiddle 上工作。但是,无论如何,您都可以在控制台中看到重复的输出。

http://jsfiddle.net/eah6sd99/4/

最佳答案

您会看到重复的字段,因为您验证了表单两次。代码的相关部分是:

$.listen('parsley:field:validate', function () {
  validateFront();
});

$('#demo-form .btn').on('click', function () {
  $('#demo-form').parsley().validate();
  validateFront();
});

$('.next').on('click', function () {
    var current = $(this).data('currentBlock'),
      next = $(this).data('nextBlock');

    if (next > current)
      if (false === $('#demo-form').parsley().validate('block' + current))
        return;

当您单击“下一步”按钮时,您会在条件中触发 parsley().validate('block' + current),从而验证该组。

此外,每当您从 单击 .btn 时,您都会获得 $('#demo-form').parsley().validate(); #demo-form 这意味着您要验证表单的同一部分两次。

要解决此问题,您只需删除 $('#demo-form .btn').on('click', function () { 代码。检查 this jsfiddle一个工作示例(我合并了所有 document.ready 代码以使其更具可读性)。

<小时/>

如果您想在表单上方显示消息,可以使用以下代码来实现:

$.listen('parsley:field:error', function(fieldInstance){
    var messages = ParsleyUI.getErrorsMessages(fieldInstance);
    $('.bs-callout-warning').append('<b>' +
        fieldInstance.$element.parent().find('label').text() + 
        '</b><br />' + 
        messages + '<br />');
});

检查this jsfiddle .

关于javascript - 使用 Parsley.js 时出现重复字段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30054011/

相关文章:

javascript - javascript 数组的长度,其中项目是对象

javascript - 不要记录在 Meteor.js 中发送的电子邮件

javascript - 将密码存储在 Javascript localStorage 中

javascript - 如何使用 ParsleyJS 仅针对一个特定按钮进行验证

javascript - 如何让 parsley.js 验证其中一个字段的数字是否最小值等于 1

javascript - 如何以编程方式在 CKEDITOR 中选择文本范围?

javascript - JQuery Form仅在某些浏览器中提交

javascript - 创建自定义验证器以检查输入是否为 Parsley 中的字符串

javascript - 如何验证用户是否选择了要上传的文件?

javascript - 使用 parsley.js 每个字段支持多个自定义错误消息