2016-02-05 14 views
0

我在具有相同類名的不同錶行中有幾個複選框。我希望一次只能選一個。我想類似以下,但沒有工作,在bootstrap中只選擇一個複選框

$('.sev_check').click(function() { 

       $('.sev_check').not(this).prop('checked', false); 
}); 

,或者

$('.sev_check').click(function() { 
    $cur=$(this).prop('checked'); 
    $(".sev_check").each(function(){ 
     $(this).prop('checked',false); 
    }) 
    $(this).prop('checked', $cur); 
}); 

這裏是我的複選框被如何排列,

enter image description here

HTML,

<div class="checkbox text-center"> 
    <label class="form-checkbox form-icon"> 
     <input id="s_fac" type="checkbox" class="sev_check"> 
    </label> 
</div> 
+8

他們應該是單選按鈕? 「單選按鈕或選項按鈕是一種圖形控制元素,它允許用戶只選擇一組預定義的選項。」 - 維基百科 – mkaatman

+0

謝謝,但我不需要單選按鈕。 – Rishi

+4

單選按鈕正是你需要的。如果你的風格如此懸殊,請按照複選框樣式設置單選按鈕 – Quill

回答

3

你的辦法正常工作,請嘗試小提琴

$('.sev_check').click(function() { 
    $('.sev_check').not(this).prop('checked', false); 
}); 

這裏有一個搗鼓出它的工作:https://jsfiddle.net/ruidfigueiredo/h3kfj2n9/2/

+0

芮,即使這不工作:| – Rishi

+0

@Rishi嘗試jsfiddle,它的工作原理與你打算的完全一樣。 – Rui

+0

芮,我真的很感激它,但仍然是相同的代碼不適合我:(可能是bootstrap設計使事情變得複雜 – Rishi

3

你的第一個方法適用於我,就像你可以在摘要中看到,但你可以 使用不同的方法像:

 
$(function() { 
    $('.sev_check').change(function(e) { 
     e.preventDefault(); 
     $('.sev_check').not(this).prop('checked', false); 
     $(this).prop('checked', true); 
    }); 
}); 

$(function() { 
 
    $('.sev_check').click(function(e) { 
 
    $('.sev_check').not(this).prop('checked', false); 
 
    }); 
 
});
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 
 

 
<div class="container"> 
 
    <form role="form"> 
 
     <div class="checkbox text-center"> 
 
      <label class="form-checkbox form-icon" for="s_fac"> 
 
       <input id="s_fac" type="checkbox" class="sev_check"> 
 
      </label> 
 
     </div> 
 
     <div class="checkbox text-center"> 
 
      <label class="form-checkbox form-icon" for="s_fac1"> 
 
       <input id="s_fac1" type="checkbox" class="sev_check"> 
 
      </label> 
 
     </div> 
 
     <div class="checkbox text-center"> 
 
      <label class="form-checkbox form-icon" for="s_fac2"> 
 
       <input id="s_fac2" type="checkbox" class="sev_check"> 
 
      </label> 
 
     </div> 
 
    </form> 
 
</div>

+0

仍然沒有工作:(我猜測由於我的複選框在表格行..要修改你的小提琴來測試這個理論。 – Rishi

0

編輯: 開始與所有的複選框看起來像他們禁用,一旦選擇一個複選框,它的出現選擇,而其他顯示爲禁用,點擊另一個複選框被一個出現的選中而其他人出現時禁用使用輸入元素的不透明度值。


檢查我下面的代碼片段:

$(document).ready(function() { 
 
    $('.sev_check').each(function() { 
 
    $(this).addClass('unselected'); 
 
    }); 
 
    $('.sev_check').on('click', function() { 
 
    $(this).toggleClass('unselected'); 
 
    $(this).toggleClass('selected'); 
 
    $('.sev_check').not(this).prop('checked', false); 
 
    $('.sev_check').not(this).removeClass('selected'); 
 
    $('.sev_check').not(this).addClass('unselected'); 
 
    }); 
 
});
.selected { 
 
    opacity: 1 
 
} 
 
.unselected { 
 
    opacity: 0.5 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="checkbox text-center"> 
 
    <table border="2"> 
 
    <tr> 
 
     <td>Value 1</td> 
 
     <td> 
 
     <input id="s_fac" type="checkbox" class="sev_check"> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td>Value 2</td> 
 
     <td> 
 
     <input id="s_fac" type="checkbox" class="sev_check"> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td>Value 3</td> 
 
     <td> 
 
     <input id="s_fac" type="checkbox" class="sev_check"> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td>Value 4</td> 
 
     <td> 
 
     <input id="s_fac" type="checkbox" class="sev_check"> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td>Value 5</td> 
 
     <td> 
 
     <input id="s_fac" type="checkbox" class="sev_check"> 
 
     </td> 
 
    </tr> 
 
    </table> 
 
</div>

+0

這是完美的工作,但你需要一個額外的步驟來取消檢查,以便選擇新的。但說我的用戶肯定會反對:( – Rishi

+0

@Rishi 那麼如果你想改變你的選擇,你直接想選擇它,而不取消選擇前面的選擇? – stark

+0

斯塔克,正好! – Rishi

相關問題