parsley.js扩展错误消息文本

时间:2017-05-18 15:37:55

标签: javascript parsley.js

按照设计,我使用上面一个div表示错误。为此,在每个错误消息之前,我还需要一些前缀,通常是来自相应标签标签的文本。

我将它实现为扩展,就像新函数一样,应该手动执行...但在这种情况下我失去了默认的ui行为。

所以,问题是可以将这种行为作为欧芹的一部分来实施(通过扩展欧芹)?

2 个答案:

答案 0 :(得分:0)

您可以自定义欧芹将错误与errorsContainer放在一起的位置。可以是在摘要区域内创建容器的函数。

错误容器也可能包含您填充的某些其他信息。

需要更好的错误消息系统,请参阅this issue

答案 1 :(得分:0)

我通过扩展两个内部功能来实现所需的行为。不确定这是个好主意,但它确实完全符合我在某些特定情况下的需要:



(function ($) {

    function getFieldLabel(parsleyField, suffix) {
        var result = '',
            labels = $('label[for=' + parsleyField.$element.prop('id') + ']');

        suffix = suffix || '';
        if (labels.length) {
            result = labels[0].innerText + suffix;
        }

        return result;
    }

    window.ParsleyExtend = window.ParsleyExtend || {};
    window.ParsleyExtend = $.extend(window.ParsleyExtend, {
        // NB! this method replaces parsley's default `_addError`
        _addError: function _addError(name, _ref5) {
            var message = _ref5.message;
            var assert = _ref5.assert;

            this._insertErrorWrapper();
            this._ui.$errorsWrapper.addClass('filled').append($(this.options.errorTemplate).addClass('parsley-' + name).html(
                getFieldLabel(this, ' - ') + (message || this._getErrorMessage(assert))
            ));
        },

        // NB! this method replaces parsley's default `_updateError`
        _updateError: function _updateError(name, _ref6) {
            var message = _ref6.message;
            var assert = _ref6.assert;

            this._ui.$errorsWrapper.addClass('filled').find('.parsley-' + name).html(
                getFieldLabel(this, ' - ') + (message || this._getErrorMessage(assert))
            );
        }
    });

})(jQuery);