2013-05-12 92 views
0

我有一個小窗體。在這種形式下,如果選擇項目a項目b,應勾選第三個複選框。該複選框被禁用,用戶不應該自行加厚。一旦項目a項目b沒有選中第三個需要的項目應該保持檢查,但是如果兩項都未選中,所需的項目也應該取消選中。必填複選框

<p><input type="checkbox" value="50.00" class="itema" />Item a</p> 
<p><input type="checkbox" value="40.00" class="itemb" />Item b</p> 
<p><input type="checkbox" value="1" class="item2" disabled />Required by item a and b</p> 

使用下面的代碼,我得到它的工作的檢查,但我不知道如何獲得有條件取消選中做

$(function() { 
    $('.itema').change(function() { 
     $('.item2').prop('checked', true); 
    }) 
    $('.itemb').change(function() { 
     $('.item2').prop('checked', true); 
    }) 
}); 

下面是一些更多的代碼 http://jsfiddle.net/mthomas/ejQjP/10/

回答

1
提琴

我知道這不是爲你解決100%的工作,但我認爲這是你遇到問題的地方,所以我建議你從這裏拿下它。

您要檢查的變化函數中的複選框的狀態

$('.item1').change(function() { 
    var isChecked = $(this).is(':checked'); // will be true after checking and false when unchecking 
    $('.item2').prop('checked', isChecked) 
       .prop('disabled', isChecked) 
       .change(); 
}) 

http://jsfiddle.net/ejQjP/17/

編輯你可能要觸發新選中的複選框更改事件

PS:沒有理由擁有3個文件準備好功能,每個$(document).ready(function() { & $(function() {可以合併成一個。

+0

這做了一部分的訣竅。我看到你正在使用老版本的小提琴(可能是我的錯誤)。但在較新的版本中有兩個項目a和b,可以觸發item2的選中/取消選中。如果項目a或b被選中,項目2也應該被檢查,所以如果他們兩個都被選中,並且其中一個未被選中,則項目2應該保持被選中,只有當項目a和b都未被選中時項目2應該被取消選中 – 2013-05-12 10:24:08

+0

然後像'var isChecked = $('。item1')。is(':checked')|| $('。item2')。is(':checked');' – Moak 2013-05-12 10:26:21

+0

非常感謝,得到它的工作:http://jsfiddle.net/mthomas/ejQjP/20/ – 2013-05-12 10:38:16

0
$(function() { 
    $('.itema , itemb').change(function() { 
      var isChecked = $('.item2').is(':checked'); 
      var isChecked1 = $('.item1').is(':checked'); 

      if(isChecked == true && isChecked1 == true) 
      $('.item2').prop('disabled', true); 

      else 
      $('.item2').prop('disabled', false); 

    }) 

}); 
+2

爲什麼downvote.Please解釋 – PSR 2013-05-12 10:08:54

+0

這是什麼與這個問題有關嗎?你如何在OP的代碼中使用它? – JJJ 2013-05-12 10:09:50

+0

對不起。我在發佈代碼 – PSR 2013-05-12 10:10:15