【问题标题】:How to apply conditional error messages?如何应用条件错误消息?
【发布时间】:2016-09-28 23:25:25
【问题描述】:

我正在尝试在欧芹中实现 laravel 的 required_if 验证,我能够成功应用它,但是在显示错误消息时出现了主要问题。我添加了以下自定义验证器 -

window.Parsley.addValidator('lpyRequiredIf', {
    validateString(value, requirement) {
        const fieldValue = document.getElementsByName(requirement[0])[0].value;
        if (requirement.indexOf(fieldValue) > -1) {
            return value !== '';
        }
        return true;
    },
});

我的输入看起来像这样 -

<input class="form-control form-control-solid placeholder-no-fix" type="password" autocomplete="off" placeholder="Password" name="password" data-parsley-lpy-required-if="[&quot;email&quot;,&quot;anik@example.com&quot;,&quot;dan@example.com&quot;]" data-parsley-lpy-required-if-message="The password field is required when email address is :value." data-parsley-validate-if-empty="" data-parsley-whitespace="trim" data-parsley-lpy-custom-message="The password field is required when email address is :value.">

现在我想显示与 laravel 验证中显示的完全一样的消息。

这是显示的 -

当邮箱地址为 :value 时,密码字段为必填项。

我想展示 -

当电子邮件地址为 anik@example.com 时,密码字段是必需的。

谁能建议我如何实现这一目标?基本上我想用验证失败时输入的电子邮件地址替换 :value。

【问题讨论】:

  • 您可以简单地将错误显示为“当电子邮件地址为时需要密码字段”,并附上我猜您从中获取电子邮件的输入值
  • @MehravishTemkar 如何在自定义验证器中完成?我可以在自定义验证器中指定静态消息,但不能指定变量。每次验证失败时,我都有一个替换它的选项,但是我再次遇到问题,即我没有在自定义验证中获得验证失败的字段。 (可能有多个字段使用此验证)
  • tbh 我从来没有用过欧芹对不起.. idk 为什么你被否决了,他们至少应该说明原因.. 我希望你能尽快得到解决方案.. 如果我有任何东西会告诉你..

标签: javascript laravel parsley.js


【解决方案1】:

我想出了如何做到这一点。我需要返回带有第一个参数的 jquery 承诺作为我需要显示的自定义消息 -

window.Parsley.addValidator('lpyRequiredIf', {
    validateString(value, ...requirement) {
        let valid = true;
        const formElement = $(requirement[requirement.length - 1].parent.$element);
        const fieldToCheck = formElement.find(`[name= ${requirement[0]} ]`);
        if (fieldToCheck.length !== 0) {
            const fieldValue = fieldToCheck.val();
            const deferred = new $.Deferred();
            const baseErrorMessage = requirement[requirement.length - 1]
                                    .domOptions.lpyRequiredIfMessage;
            if (requirement.indexOf(fieldValue) > -1 && value === '') {
                deferred.reject(baseErrorMessage.replace(':value', fieldValue));
            } else {
                deferred.resolve();
            }
            valid = deferred.promise();
        }
        return valid;
    },
});

我在这里返回自定义错误消息 -

deferred.reject(baseErrorMessage.replace(':value', fieldValue));

附: - 由于我需要更精炼,因此对代码进行了一些编辑。

【讨论】:

    猜你喜欢
    • 2013-03-08
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 2019-04-11
    相关资源
    最近更新 更多