Parsley JS - 禁用单个验证器的消息

Posted

技术标签:

【中文标题】Parsley JS - 禁用单个验证器的消息【英文标题】:Parsley JS - Disable message for individual validator 【发布时间】:2017-03-24 01:44:10 【问题描述】:

目前我有两个自定义验证器,一个触发另一个,我只需要显示其中一个验证器的错误消息。

我知道您可以使用 data-parsley-errors-messages-disabled 禁用所有消息,但有没有办法在 Parsley 中禁用单个验证器的消息?

在此处查看示例 - http://jsfiddle.net/tp9esyt0/1/


JS:

window.Parsley.addValidator('ccexp', 
  validate: function(values, id) 
    if($('#' + id + '_month').val() == '' || $('#' + id + '_year').val() == '') 
      return false
    

    return true
  ,
  messages: 
    en: 'Please provide both month and year'
  
)

window.Parsley.addValidator('ccexpLink', 
  validate: function(values, id) 
    $('#' + id + '_month').parsley().validate()
    return $('#' + id + '_month').parsley().validate() == true ? true : false
  ,
  messages: 
    en: ' '  // <-- Howto disable this message completley
  
)

$('#myform').parsley().on('form:submit', function() 
  return false
)

html

<form id="myform">
<select name="month" id="exp_month" data-parsley-validate-if-empty data-parsley-trigger="change" data-parsley-ccexp="exp">
  <option value="" selected="selected"></option>
  <option value="01">01 - Jan</option>
  <option value="02">02 - Feb</option>
  <option value="03">03 - Mar</option>
  <option value="04">04 - Apr</option>
  <option value="05">05 - May</option>
  <option value="06">06 - Jun</option>
  <option value="07">07 - Jul</option>
  <option value="08">08 - Aug</option>
  <option value="09">09 - Sep</option>
  <option value="10">10 - Oct</option>
  <option value="11">11 - Nov</option>
  <option value="12">12 - Dec</option>
</select>
<select name="year" id="exp_year" data-parsley-validate-if-empty data-parsley-trigger="change" data-parsley-ccexp-link="exp">
  <option value="" selected="selected"></option>
  <option value="2016">2016</option>
  <option value="2017">2017</option>
  <option value="2018">2018</option>
  <option value="2019">2019</option>
  <option value="2020">2020</option>
  <option value="2021">2021</option>
  <option value="2022">2022</option>
  <option value="2023">2023</option>
  <option value="2024">2024</option>
  <option value="2025">2025</option>
  <option value="2026">2026</option>
</select>
<input type="submit" />

【问题讨论】:

为什么要在“ccexpLink”自定义验证器中调用 validate()? ccexpLink 验证器除了触发ccexp 验证器之外不需要做任何事情,因为这两个字段相互依赖。我愿意接受更好方法的建议 【参考方案1】:

一种更好的方法是将两个字段的包装器视为您要附加自定义验证的字段。我希望将其正式化,但尚未完成。检查this example。

另一种替代方法是确保第二个字段的更改触发第一个字段的验证。目前还没有内置方法可以做到这一点,但您可以手动完成,例如:

$('.second-field').on('input', function() 
  $('.first-field').trigger('input')
 )

【讨论】:

以上是关于Parsley JS - 禁用单个验证器的消息的主要内容,如果未能解决你的问题,请参考以下文章

动态禁用禁用字段的 Parsley 验证

Parsley JS 不等于多个 ID

Parsley js:如何验证模态弹出窗口内的输入字段并在模态本身内显示错误消息

parsley.js 不验证多个验证

Parsley.js isValid() 使用自定义验证器返回 null

为啥我的自定义验证器在 parsley.js 中不起作用?