2015-10-14 28 views
0

能否請您看看這個片段中,讓我知道WNY的D + FD + E或任何與D選擇不工作(除了選擇C + D的)有問題上獲得一個複選框值隨開關罩

var selectedETargetNum; 
 
$('input:checkbox[name=projectsWith]').on('change', function() { 
 
    var val = ''; 
 
    $('input:checkbox[name=projectsWith]:checked').each(function() { 
 
     val += $(this).val(); 
 
    }); 
 
    switch (val) { 
 
     case 'c': 
 
      selectedETargetNum = val; 
 
      console.log(selectedETargetNum); 
 
      break; 
 
     case 'd': 
 
      selectedETargetNum = val; 
 
      console.log(selectedETargetNum); 
 
      break; 
 
     case 'e': 
 
      selectedETargetNum = val; 
 
      console.log(selectedETargetNum); 
 
      break; 
 
     case 'f': 
 
      selectedETargetNum = val; 
 
      console.log(selectedETargetNum); 
 
      break; 
 
     case 'cd': 
 
      selectedETargetNum = val; 
 
      console.log(selectedETargetNum); 
 
      break; 
 
     case 'ce': 
 
      selectedETargetNum = val; 
 
      console.log(selectedETargetNum); 
 
      break; 
 
     case 'cf': 
 
      selectedETargetNum = val; 
 
      console.log(selectedETargetNum); 
 
      break; 
 
     case 'de': 
 
      selectedETargetNum = val; 
 
      console.log(selectedETargetNum); 
 
      break; 
 
     case 'df': 
 
      selectedETargetNum = val; 
 
      console.log(selectedETargetNum); 
 
      break; 
 
     case 'ef': 
 
      selectedETargetNum = val; 
 
      console.log(selectedETargetNum); 
 
      break; 
 
     case 'cde': 
 
      selectedETargetNum = val; 
 
      console.log(selectedETargetNum); 
 
      break; 
 
     case 'cef': 
 
      selectedETargetNum = val; 
 
      console.log(selectedETargetNum); 
 
      break; 
 
     case 'cdf': 
 
      selectedETargetNum = val; 
 
      console.log(selectedETargetNum); 
 
      break; 
 
     case 'def': 
 
      selectedETargetNum = val; 
 
      console.log(selectedETargetNum); 
 
      break; 
 
     case 'cdef': 
 
      selectedETargetNum = val; 
 
      console.log(selectedETargetNum); 
 
      break; 
 
    } 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<label for="c1" class="" role=""> 
 
     <div class=""> 
 
     <div class="">C</div> 
 
     <div class=""> <input type="checkbox" value="c" name="projectsWith" id="c1" class=""/> <span></span></div> 
 
     </div> 
 
</label> 
 
    
 
<label for="c2" class="" role=""> 
 
     <div class=""> 
 
     <div class="">E</div> 
 
     <div class=""> <input type="checkbox" value="e" name="projectsWith" id="c2" class=""/> <span></span></div> 
 
     </div> 
 
</label> 
 

 
<label for="c3" class="" role=""> 
 
     <div class=""> 
 
     <div class="">F</div> 
 
     <div class=""> <input type="checkbox" value="f" name="projectsWith" id="c3" class=""/> <span></span></div> 
 
     </div> 
 
</label> 
 

 
<label for="c55" class="" role=""> 
 
     <div class=""> 
 
     <div class="">D</div> 
 
     <div class=""> <input type="checkbox" value="d" name="projectsWith" id="c55" class=""/> <span></span></div> 
 
     </div> 
 
</label>

+0

因爲字符串是?你究竟想要完成什麼?代碼似乎過於冗長。 – Stryner

+0

我需要的是,如果用戶選中所有複選框,'selectedETargetNum'必須是'cefd',或者如果用戶選擇'E + F + D',它必須是'efd',但這不會發生!只有當我選擇'D' – Behseini

+0

'd'是最後一個複選框。在你的交換機中你有'cdef',這不是真正的訂單。檢查出。 –

回答

0

的主要問題是,在檢查每個複選框點擊,字符串基於其上顯現的複選框的序列構建。 爲了解決它,你需要隔離之前檢查的項目,然後查找任何檢查的新項目。

更新:

var selectedETargetNum; 
var val = ""; 
$('input:checkbox[name=projectsWith]').on('change', function() { 
    $('input:checkbox[name=projectsWith]').each(function() { 
     if($(this).is(":checked")) 
     { 
      if(val.indexOf($(this).val()) == -1) 
      val += $(this).val(); 
     } 
     else 
     { 
      val = val.replace($(this).val(),""); 
     } 
    }); 

    alert("This is checked sequence : " + val); 
}); 

小提琴:http://jsfiddle.net/gcfLso5s/3/

+0

謝謝DinoMyte,但這不能取消選擇! – Behseini

+0

更新了代碼反映取消選擇複選框 – DinoMyte