2016-06-10 54 views
0

我想对于那些重复或不唯一值显示错误,但我的形式发生在输入数组,我已经检查上的jsfiddle这些问题,name = "week[]"失败,但name = "week"工作正常jQuery验证了重复表格阵列

  1. Question 1

  2. Question 2

  3. Question 3

  4. Question 4

HTML表单

<html> 
    <head></head> 
    <body> 
     <form name = "myForm" id = "myForm" class ="validate"> 
      <input type="number" name="week[]" id="week1"/> 
      <input type="number" name="week[]" id="week2"/> 
      <input type="number" name="week[]" id="week3"/> 
      <input type="number" name="week[]" id="week4"/> 
     </form> 
     <script src="assets/js/jquery.validate.min.js"></script> 
    </body> 
</html> 

我想这

<script type="text/javascript"> 
    jQuery.validator.addMethod("unique", function(value, element, params) { 
     var prefix = params; 
     var selector = jQuery.validator.format("[name!='{0}'][unique='{1}']", element.name, prefix); 
     var matches = new Array(); 
     $(selector).each(function(index, item) { 
      if (value == $(item).val()) { 
       matches.push(item); 
      } 
     }); 

     return matches.length == 0; 
    }, "Value is not unique."); 

    jQuery.validator.classRuleSettings.unique = { 
     unique: true 
    }; 
</script> 

任何帮助表示赞赏

+2

嗯,首先,你不能有重复的'ID's。 – putvande

+0

首先'id'应该是唯一的。并请向我们展示验证输入字段的代码......或者至少您尝试过的内容。 – Jurik

+0

**相关代码的其余部分在哪里?**您在哪里调用'.validate()'和表单的HTML标记?请参阅:http://stackoverflow.com/help/mcve – Sparky

回答

4

您可以创建输入值的阵列map()再检查对于在阵列和显示/隐藏错误信息重复

$('#myForm input').on('change', function() { 
 

 
    //Create array of input values 
 
    var ar = $('#myForm input').map(function() { 
 
    if ($(this).val() != '') return $(this).val() 
 
    }).get(); 
 

 
    //Create array of duplicates if there are any 
 
    var unique = ar.filter(function(item, pos) { 
 
    return ar.indexOf(item) != pos; 
 
    }); 
 

 
    //show/hide error msg 
 
    (unique.length != 0) ? $('.error').text('duplicate'): $('.error').text(''); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form name="myForm" id="myForm"> 
 
    <input type="number" name="week[]" id="week1"> 
 
    <input type="number" name="week[]" id="week2"> 
 
    <input type="number" name="week[]" id="week3"> 
 
    <input type="number" name="week[]" id="week4"> 
 
</form> 
 
<div class="error"></div>

+0

这工作,谢谢 – 4Jean

+0

不客气。这种检查重复项的方法比以前更好。 –