如何在选择的第n个子集内验证唯一选择

How would I validate unique selects, within nth sub sets of selects?

本文关键字:选择 子集 验证 唯一      更新时间:2023-09-26

我有这段动态生成的代码。

<p>
   Class Choices 1 </br>
   <select name="1_option_1">
      <option value=4>2x3 Study Time</option>
      <option value=5>2x3 Science Time</option>
      <option value=6>2x3 Math Time</option>
   </select>
   choice 1 </br>
   <select name="2_option_1">
      <option value=4>2x3 Study Time</option>
      <option value=5>2x3 Science Time</option>
      <option value=6>2x3 Math Time</option>
   </select>
   choice 2 </br>
   <select name="3_option_1">
      <option value=4>2x3 Study Time</option>
      <option value=5>2x3 Science Time</option>
      <option value=6>2x3 Math Time</option>
   </select>
   choice 3 </br>
</p>
<p>
   Class Choices 2 </br>
   <select name="1_option_2">
      <option value=1>2x3 Knitting</option>
      <option value=2>2x3 Computers</option>
      <option value=3>2x3 Having Fun</option>
   </select>
   choice 1 </br>
   <select name="2_option_2">
      <option value=1>2x3 Knitting</option>
      <option value=2>2x3 Computers</option>
      <option value=3>2x3 Having Fun</option>
   </select>
   choice 2 </br>
   <select name="3_option_2">
      <option value=1>2x3 Knitting</option>
      <option value=2>2x3 Computers</option>
      <option value=3>2x3 Having Fun</option>
   </select>
   choice 3 </br>
</p>

上面的代码遵循这些规则。

For all (n) Class Choices (block?)

  • 如果一个类选择(block?)有2个类,则生成两个选择选项选择。
  • 如果一个类选择(block?)有3个类,则生成3个选择选项选择。
  • 如果一个类选择(block?)有n个类,则生成第n个选择选项。

注意,我生成唯一选择名的目的是使查找唯一集更容易。如果不是这样,我可以将给定的名称更改为更统一的名称。此外,我还可以根据需要添加类名或其他属性。我是新的html和脚本,所以我做了很多猜测的工作。

对脚本语言没有要求。

我如何验证唯一选择,在第n个子集的选择?也就是说,对于每个Choice块,为选项强制惟一的值。

例如:

拒绝输入

Class Choices 1 != 4,4,4  
Class Choices 1 != 4,4,5  
Class Choices 1 != 4,4,6 
...
Class Choices 1 != 5,5,5  
Class Choices 1 != 5,4,4  
Class Choices 1 != 5,6,6  
...
Class Choices 1 != 6,6,6  
Class Choices 1 != 6,6,5  
Class Choices 1 != 6,4,4  
...

对于任何重复项

接受输入

Class Choices 1 == 4,5,6  
Class Choices 1 == 5,6,4  
Class Choices 1 == 6,5,4  
...

验证的范围应该与类选择相关。那就是选择一,选择二,…类选择N

解决这个任务的要点如下:

$(function(){
  $('select').change(function(){
    var enabled = [];
    
    $('.group').each(function(){
      var values = [];
      $(this).children('select').each(function(){
        var value = $(this).find(":selected").val();
        // fills the enabled array with true or false depending if the value is unique to the group; 
        enabled.push(areWeSpecialYet(values, value));
        
        values.push(value);
      });
    });
    // enables the button if all are unique.
    enableTheButton(enabled);
  });
});

如果你感兴趣,你可以查看这里的工作示例,它将与任何数量的组或选项一起工作:

<<h2> JSBin例子/h2>