如何应用条件错误消息?

How to apply conditional error messages?

我正在尝试在欧芹中实施 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 验证中显示的完全一样的消息。

这是显示的内容 -

The password field is required when email address is :value.

我想展示 -

The password field is required when email address is anik@example.com.

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

我想出了如何做到这一点。我需要 return 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;
    },
});

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

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

P.S。 - 代码根据问题进行了一些编辑,因为我需要它更细化。