欧芹错误消息%s1中的单个要求

问题描述 投票:0回答:1

嗨,我在parsley.js中有一个具有2个要求(参数/参数)的自定义验证器

对于错误消息,我只想显示其中一项要求,但我无法确定如何做

        messages: {en: 'You must choose at least one language with %s'},

我以为%s1或%s0可能有用,但它们不起作用

%s导致显示此消息:

您必须至少选择一种语言作为[母语,注册形式_新_说明语言_熟练程度]

但我只想

您必须选择至少一种语言作为母语

这里是我的完整验证器,以帮助您回答:

  Parsley.addValidator('oneChildEquals', {
    requirementType: ['string', 'string'],
    validateString: function(_value, requirement, requirement2, instance) {
      var $inputs = $(instance.element).find("select.language-proficiency");
      var valid = false;
      $inputs.each(function(i){
        if($(this).val() == requirement){
          valid = true; // one input has the target value (requirement2)
          return false; //break out of the loop
        }
      });
      // no input has the target value (requirement2)
      return valid;
    },
    messages: {en: 'You must choose at least one language with %s'},
  });
parsley.js
1个回答
0
投票
我已经写了一个解决方案,可能需要改进,但是我什至不知道我现在是否需要这个解决方案。无论如何,如果有人这样做,您可以添加以下代码:

if(typeof(string) === 'string' && typeof(parameters) === 'string' && parameters.match(/^\[.*\]$/) && string.match(/\%s\d/)){ //parameters are an array of values and string is trying to access them individually with %s1 to get first etc var paramsArray = parameters.slice(1, parameters.length-1).split(','); var interpolations = string.match(/\%s\d/g); for(var j = 0; j < interpolations.length ; j++){ var interpolation = interpolations[j]; var number = parseInt(interpolation.replace("%s", '')); if(isNaN(number)){ string = string.split(interpolation).join(interpolation + '[not a valid interpolation]'); }else { var val = paramsArray[number-1]; if(typeof(val) === 'undefined'){ val = interpolation + '[not a valid interpolation]'; } string = string.split(interpolation).join(val); } } return string }

在源代码中此代码之后

formatMessage: function formatMessage(string, parameters) { if ('object' === _typeof(parameters)) { for (var i in parameters) { string = this.formatMessage(string, parameters[i]); } return string; }

和之前

return 'string' === typeof string ? string.replace(/%s/i, parameters) : '';

然后它支持类似的东西

Parsley.addValidator('testParsley', { requirementType: ['string','string'], validateString: function(_value, requirement, requirement2) { return (_value === requirement || _value === requirement2); }, messages: {en: 'test parsley this field must equal %s1 or %s2'} });

© www.soinside.com 2019 - 2024. All rights reserved.