2013-05-12 94 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