如何根据用户选择动态更改多个复选框的编号?

时间:2016-04-26 13:11:01

标签: javascript jquery

我有10个复选框。当用户选择第一个复选框时,标签显示为“a)”。在它旁边。在选择第二个复选框时,此标签将更改为“b)”。如果它与新选择相比在复选框的顺序中放置得更低,并且新的复选框得到标签“a)”。反之亦然。

我找到了一种方法,通过使用二进制方法来实现这一点,我检查是否选择了1st,2nd,然后3rd是“c”。如果不是那么“b)。”或“a)。”但是这个逻辑变得太大而且当一个大的没有时效率低。的复选框进来了。

有人可以帮我找到更好的逻辑吗?

以下是示例代码

var a= optionA.header.CheckBox4.rawValue;
 var b= optionB.header.CheckBox4.rawValue;
 var c= optionC.header.CheckBox4.rawValue;
 var d= optionD.header.CheckBox4.rawValue; 
 if(this.rawValue == 1)
 {
    if(a==0 && b==0 && c==0 && d==0)
      optionE.number = "c)";
    else if(a==0 && b==0 && c==0 && d==1)
      optionE.number = "d)";
    else if(a==0 && b==0 && c==1 && d==0)
      optionE.number = "d)";    
    else if(a==0 && b==1 && c==0 && d==0)
      optionE.number = "d)";  
    else if(a==1 && b==0 && c==0 && d==0)
      optionE.number = "d)";  
    else if(a==1 && b==1 && c==0 && d==0)
      optionE.number = "e)";
    else if(a==1 && b==0 && c==1 && d==0)
      optionE.number = "e)";    
    else if(a==1 && b==0 && c==0 && d==1)
      optionE.number = "e)";  
    else if(a==0 && b==1 && c==0 && d==1)
      optionE.number = "e)";  
    else if(a==0 && b==1 && c==1 && d==0)
      optionE.number = "e)";  
    else if(a==0 && b==0 && c==1 && d==1)
      optionE.number = "e)";    
    else if(a==1 && b==1 && c==1 && d==0)
      optionE.number = "f)";    
    else if(a==1 && b==0 && c==1 && d==1)
      optionE.number = "f)";    
    else if(a==1 && b==1 && c==0 && d==1)
      optionE.number = "f)";    
    else if(a==0 && b==1 && c==1 && d==1)
      optionE.number = "f)";    
    else if(a==1 && b==1 && c==1 && d==1)
      optionE.number = "g)";    
 }
 else
 {
    optionE.number = "";    
 } 

2 个答案:

答案 0 :(得分:0)

您的代码的算法可以替换为:

switch(a+b+c+d) {
case 0: optionE.number = "c)"; break;
case 1: optionE.number = "d)"; break;
case 2: optionE.number = "e)"; break;
case 3: optionE.number = "f)"; break;
case 4: optionE.number = "g)"; break;
}

答案 1 :(得分:0)

我不确定你的意思是什么,据我所知,最新复选的复选框是'a',接下来最新的是'b',....

如果我的理解是正确的,你可以试试这个:

var
cbArr = [],
charArr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];

$(':checkbox').change(function() {
  var $this = $(this);

  if ($this.is(':checked')) { // If checked, add element to end of array
    cbArr.push(this);
  } else {
  	cbArr.splice(cbArr.indexOf(this), 1) // If not checked, remove element
  }

  $(':checkbox ~ label').text('');
  $.each(cbArr, function(i, v) {
    var charIdx = cbArr.length - i - 1; // Get letter index
    $(v).next('label').text(charArr[charIdx]);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="cb-1">
<label for="cb-1"></label>
<br>
<input type="checkbox" id="cb-2">
<label for="cb-2"></label>
<br>
<input type="checkbox" id="cb-3">
<label for="cb-3"></label>
<br>
<input type="checkbox" id="cb-4">
<label for="cb-4"></label>
<br>
<input type="checkbox" id="cb-5">
<label for="cb-5"></label>
<br>
<input type="checkbox" id="cb-6">
<label for="cb-6"></label>
<br>
<input type="checkbox" id="cb-7">
<label for="cb-7"></label>
<br>
<input type="checkbox" id="cb-8">
<label for="cb-8"></label>
<br>
<input type="checkbox" id="cb-9">
<label for="cb-9"></label>
<br>
<input type="checkbox" id="cb-10">
<label for="cb-10"></label>
<br>