如何在错误消息中包含其他字段的值

时间:2014-10-13 19:24:46

标签: javascript jquery parsley.js

我正在使用Parsely来验证依赖于另一个字段的字段。我也使用Bootstrap工具提示来显示错误。

我创建了一个自定义验证器来验证值大于或等于另一个输入值的输入。我希望在用户出错时显示第一个文本框中的值的错误消息。

var v="";
window.ParsleyValidator.addValidator('gte', 
    function (value, requirement) {
        v=$(requirement).val();
        alert(v);
        return parseFloat(value) >= parseFloat($(requirement).val());
    }, 32)
    .addMessage('en', 'gte', 'This value should be greater or equal to '+v);

在此JSfiddle中是一个完整的例子。

要测试此项,请将值2放在第一个文本框中,将1放在第二个文本框中。正确的错误消息应该是

  

此值应大于或等于2.

如果我设置变量' v'等于它在错误消息中附加的内容。如果我尝试将其设置为$(requirement).val(),则无效。

2 个答案:

答案 0 :(得分:2)

我们应该更新目录以完成它:)

以下是适合您的小提琴:

  

http://jsfiddle.net/zawx26h7/34/

只有我在下面的验证器脚本中所做的更改才是相同的

//var v = "";
window.ParsleyValidator.addValidator('gte',
function (value, requirement) {
    window.ParsleyValidator.catalog.en.gte = 'This value should be greater or equal to ' + $(requirement).val();
    return parseFloat(value) >= parseFloat($(requirement).val());
}, 32)
    //.addMessage('en', 'gte', 'This value should be greater or equal to ' + v);

答案 1 :(得分:0)

问题是您在不同的上下文中使用v。应该注意vaddValidator已正确设置。您正试图在addMessage中使用该函数外部。

您可以通过手动设置消息来解决此问题,如下所示:

var v="";
window.ParsleyValidator
    .addValidator('gte', function (value, requirement) {
        v = $(requirement).val();

        if (parseFloat(value) < parseFloat(v)) {
            window.ParsleyValidator.addMessage('en', 'gte', 
                   'This value should be greater or equal to ' + v);
            return false;
        }

        return true;
    }, 32);

您可以使用window.ParsleyValidator.addMessage在实际验证中添加消息,而不是在验证程序的定义中传递消息。

您可以使用this updated jsfiddle进行测试。


我想提两件事:

  1. This issue on GitHub详细说明了与您相同的情况,我提出的解决方案基于此问题。
  2. Parsley在文档中有一个Parsley Extras。这些额外内容提供了额外的验证,例如Greater than or equal to。我从来没有使用过它们但是如果你想要我想只是包含comparison.js文件可以是downloaded from GitHub。但是,我不确定消息的行为方式。