Javascript Jquery验证和选择框列表

Javascript Jquery验证和选择框列表,javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,我如何才能为如下所示的选择框列表提供特定要求和唯一条件 <form name="signupForm" class="cmxform" id="signupForm" method="get" action=""> <select name="category[]" id="cat_1"> <option value="">Select One</option> <option value="1">aa</option> &

我如何才能为如下所示的选择框列表提供特定要求和唯一条件

<form name="signupForm" class="cmxform" id="signupForm" method="get" action="">
<select name="category[]" id="cat_1">
<option value="">Select One</option>
<option value="1">aa</option>
<option value="2">bb</option>
<option value="3">cc</option>
<option value="4">dd</option>
</select>
<select name="category[]" id="cat_2">
<option value="">Select One</option>
<option value="5">ee</option>
<option value="6">ff</option>
<option value="7">gg</option>
<option value="8">hh</option>
</select>
<select name="category[]" id="cat_3">
<option value="">Select One</option>
<option value="9">ii</option>
<option value="10">jj</option>
<option value="11">kk</option>
<option value="12">ll</option>
</select>
<input class="submit" type="submit" value="Submit">
</form>

选择一个
aa
bb
复写的副本
dd
选择一个
ee
ff
游戏打得好
嗯
选择一个
二,
林俊杰
kk
陆上通信线
请注意,cat的数量不是固定的,可以超过3

那么如何使每个selectbox都需要它


使用jquery验证插件,每个selectbox选择的值必须是唯一的?谢谢

这里有一个很棒的jQuery验证插件,它可以让您的生活更轻松:

这就是你所需要做的:(插件完成剩下的工作)


--挑选--
网球
足球
高尔夫球

希望对您有所帮助:)

这里有一个很棒的jQuery验证插件,可以让您的生活更轻松:

这就是你所需要做的:(插件完成剩下的工作)


--挑选--
网球
足球
高尔夫球
希望有帮助:)

var$selects=$('formselect[name^=category]'),
值=[];
$(':submit')。单击(函数(e){
e、 预防默认值();
值=[];
$($选择)。每个(函数(){
if($(this.val()){
value.push($(this.val());
}
});
如果(!values.length){
警报(“请选择所有类别”);
返回false;
}
if(values.length<$selects.length |$.unique(values.length<$selects.length){
警报(“请选择所有类别并保持唯一”);
返回false;
}
});

var$selects=$(“表单选择[name^=category]”),
值=[];
$(':submit')。单击(函数(e){
e、 预防默认值();
值=[];
$($选择)。每个(函数(){
if($(this.val()){
value.push($(this.val());
}
});
如果(!values.length){
警报(“请选择所有类别”);
返回false;
}
if(values.length<$selects.length |$.unique(values.length<$selects.length){
警报(“请选择所有类别并保持唯一”);
返回false;
}
});

@Leo Chan我没有任何验证插件。谢谢,但是,当选择正确时,我按确认按钮,根本没有响应(不进入我发布的页面)?@Leo Chan我没有任何验证插件。谢谢,但是,当选择正确时,我按确认按钮,根本没有响应(不转到我发布的页面)?@Sparky“和使用jquery验证插件选择的每个selectbox值必须是唯一的?”他希望使用jquery插件来实现它。标准jquery的Validate插件无法实现这一点,因为它有缺陷。因此建议使用另一个插件似乎是错误的legit@Aram,要求每个
输入
元素有一个唯一的名称并没有什么问题。如果您发现自己复制了
名称
,那么您的HTML标记up是错误的来源。@Sparky,有时给不同的选择框赋予相同的名称是很方便的,这样就创建了一个组,在提交时会变成一个值数组,有点..所以这并不总是被认为是一个错误。如果你不能遵守插件的标记要求,htmlIt就不是一个错误。但是,我不能接受这样一个场景:多个输入元素共享相同的
名称
,以便“某种程度上”创建数组……当然有更好的方法。@Sparky建议一种更好的方法:)@Sparky“使用jquery验证插件,每个selectbox选择的值必须是唯一的?”他希望使用jquery插件实现它。标准jQuery的Validate插件无法实现这一点,因为它有缺陷。所以建议另一个插件似乎legit@Aram,要求每个
输入
元素有一个唯一的名称并没有什么问题。如果您发现自己复制了
名称
,那么您的HTML标记就是错误的来源。@Sparky,有时可以方便地为不同的选择框指定相同的名称,从而创建一个组,该组在提交时会变成一个值数组,有点。。所以这并不总是被认为是一个bug,如果你不能遵守插件的标记要求,htmlIt就不是bug。但是,我不能接受多个输入元素共享同一个
名称
以“排序”创建数组的场景。。。当然还有更好的方法。@Sparky建议一个更好的方法:)
<select id="sport" class="validate[required]" name="sport">
<option value="">--Select--</option>
<option value="option1">Tennis</option>
<option value="option2">Football</option>
<option value="option3">Golf</option>
</select>
var $selects = $('form select[name^=category]'),
    values = [];

$(':submit').click(function(e) {
  e.preventDefault();
  values = [];
  $($selects).each(function() {
      if($(this).val()) {
          values.push($(this).val());        
      }
  });
    if(!values.length) {
        alert('Please select all categories');
        return false;
    }
  if(values.length < $selects.length || $.unique(values).length < $selects.length) {
    alert('Please select all categories and be unique');
    return false;
  }
});