簡體   English   中英

如何根據用戶選擇動態更改多個復選框的編號?

[英]How to change the numbering of multiple check-boxes dynamically depending upon user selection?

我有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 = "";    
 } 

您的代碼的算法可以替換為:

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;
}

我不確定您真正的意思,據我了解,最新選中的復選框是“ 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> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM