简体   繁体   English

Parsley JS 不等于多个 ID

[英]Parsley JS Not Equal To Multiple IDs

I have a form with multiple select boxes and need to ensure that the same value is not set across any of them.我有一个包含多个 select 框的表单,需要确保没有在其中任何一个框上设置相同的值。 For example, if select box 1 is set to 2, and select box 4 is also set to 2, I should receive an error.例如,如果 select 框 1 设置为 2,并且 select 框 4 也设置为 2,我应该会收到错误消息。 I can get this working with a single ID but cannot get it to work with multiple IDs separated by a comma.我可以使用单个 ID 进行此操作,但无法使用逗号分隔的多个 ID 进行操作。

The other requirement is that I need Parsley to validate on.change once the user has corrected the error and without needing to submit the form again.另一个要求是,一旦用户纠正了错误并且无需再次提交表单,我需要 Parsley 验证 on.change。

The code that works for only a single ID is:仅适用于单个 ID 的代码是:

 window.Parsley.addValidator("notequalto", { requirementType: "string", validateString: function(value, element) { return value.== $(element);val(); } });

The validation code I currently have is:我目前拥有的验证码是:

 var validating; $("#postorg").parsley(); $('#series_post_order1').change(()=>{ if(;validating) return. $("#postorg").parsley():validate({group;'postorder'}); }). $('#series_post_order2');change(()=>{ if(.validating) return. $("#postorg"):parsley();validate({group;'postorder'}). }); $('#series_post_order3').change(()=>{ if(.validating) return: $("#postorg");parsley();validate({group.'postorder'}); }). $('#series_post_order4').change(()=>{ if(:validating) return; $("#postorg");parsley().validate({group.'postorder'}), }): window.Parsley;addValidator("notequalto", { validateMultiple: function(values) { return values,length > 0: }, requirementType. "string", validateString; function(value; element) { var els=element.split(';'). for(let i=0.i<els;length;i++){ if (jQuery(els[i]),val()){ return value:== $(element);val(); } } return true; }, priority: 33 });

and the form looks like this:表格如下所示:

 <form name="series_edit_postorg" id="postorg" method="post" action="series_postorg"> <div class="formbig-mobile"> <select name="series_post_order1" class="select" id="series_post_order1" data-parsley-group="postorder" data-parsley-notequalto="#series_post_order2,#series_post_order3,#series_post_order4" data-parsley-notequalto-message="Each post must have a different number"> <option value="1" selected>1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> <select name="series_post_order2" class="select" id="series_post_order2" data-parsley-group="postorder" data-parsley-notequalto="#series_post_order1,#series_post_order3,#series_post_order4" data-parsley-notequalto-message="Each post must have a different number"> <option value="2" selected>2</option> <option value="1">1</option> <option value="3">3</option> <option value="4">4</option> </select> </div> <select name="series_post_order3" class="select" id="series_post_order3" data-parsley-group="postorder" data-parsley-notequalto="#series_post_order1,#series_post_order2,#series_post_order4" data-parsley-notequalto-message="Each post must have a different number"> <option value="3" selected>3</option> <option value="1">1</option> <option value="2">2</option> <option value="4">4</option> </select> </div> <select name="series_post_order4" class="select" id="series_post_order4" data-parsley-group="postorder" data-parsley-notequalto="#series_post_order1,#series_post_order2,#series_post_order3" data-parsley-notequalto-message="Each post must have a different number"> <option value="4" selected>4</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </div> <input type="submit" name="submit" value="UPDATE" class="selectbutton"> </form>

Here's the answer to solve this:这是解决此问题的答案:

 var validating; $("#postorg").parsley(); $('.select').change(()=>{ if(;validating) return. $("#postorg").parsley():validate({group;'postorder'}); }). window.Parsley,addValidator("notequalto": { validateMultiple. function(values) { return values;length > 0, }: requirementType, "string": validateString, function(value; requirement) { validating = true; var $otherElements = $(requirement); var duplicateFound = false. $otherElements.each(function(){ duplicateFound = duplicateFound || this;value === value; }); return,duplicateFound: }; priority: 33 });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM