2016-04-26 3 views
0

У меня есть 10 флажков. Когда пользователь выбирает первый флажок, тогда появляется метка «a». » рядом с ним. При выборе второго флажка этот ярлык изменяется на «b». » если он помещен ниже в порядке расположения флажка по сравнению с новым выбором, а новый флажок получает метку «a». » и наоборот.Как изменить нумерацию нескольких флажков динамически в зависимости от выбора пользователя?

Я нашел способ сделать это, используя двоичный подход, где я проверяю, выбран ли 1-й, 2-й, а третий - «c». » если не тогда "b". " или "а". " но эта логика становится слишком большой и неэффективной, когда большой нет. из контрольных ящиков.

Может ли кто-нибудь помочь мне найти лучшую логику?

Вот пример кода

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

Как мы выполняем код? – Rayon

+0

Это javascript, используемый в Adobe Livecycle. –

+0

Можете ли вы разместить свой код? – callback

ответ

0

algorithmus ваш код может быть заменен:

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

Отличный !! Спасибо, это должно работать как шарм !! –

0

Я не уверен, что вы на самом деле имел в виду, как я понял, самое новое проверено флажок это «а», следующая новая это «б», ....

Если я правильно понимаю, вы можете попробовать это:

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 { 
 
    \t 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>

+0

Привет, позвольте мне сказать вам, что вы даете javascript-код, который поддерживает html, где, как мой код для Adobe Livecycle, который также использует javascript. Я не совсем уверен, что это возможно. –

Смежные вопросы