2012-07-26 135 views
1

我需要一些帮助jQuery。jQuery函数为了检查复选框

我有一个复选框一个形式,如:

<form name="myform"> 
<input type="checkbox" name="apple[]" value="12" /> 
<input type="checkbox" name="apple[]" value="12" /> 
<input type="checkbox" name="apple[]" value="14" /> 
<input type="checkbox" name="apple[]" value="15" /> 
<input type="checkbox" name="peach[]" value="12" /> 
<input type="checkbox" name="peach[]" value="14" /> 
<input type="checkbox" name="peach[]" value="15" /> 

这里是jQuery的已经尝试过:

$(document).ready(function(){ 
    $(":checkbox").change(function(){ 
     if($('.peach').attr("checked")) { 
      alert("Checked"); 
     } 
     else { 
      alert("Unchecked"); 
     } 
    }); 
}); 

当我检查了一个名为复选框, “桃花” 我应该能够检查名为“apple”的复选框,其值与“桃”相同。因此,如果我将“桃子”的值设为12,那么也应该检查名为“苹果”的值为12的复选框。

我是jQuery的新手,所以我找不到自己的解决方案...有人可以帮我吗? :-)

问候

费德里科

+1

如果你表现出你已经尝试,而不是要求一个完整的解决方案的代码,你会得到一个更好的响应。 – 2012-07-26 17:05:29

+0

[SSCCE](http://robzu.com/sscce-short-self-contained-correct-compilable-example) – RobB 2012-07-26 17:07:16

+0

嗯,我知道,但这将是完全无用的,因为我甚至无法成功管理“已检查”事件。我给了一个“桃类”桃桃复选框,并尝试此代码: $(document).ready(function(){ $(“:checkbox”)。change(function(){ if($(' 。桃子')。attr(“checked”)) { alert(“Checked”); } else { alert(“Unchecked”); } }); }); 但没有任何反应 – 2012-07-26 17:08:09

回答

0

尝试以下操作:

$('input[name^="peach"]').change(function() { 
    var apple = $('input[name^="apple"][value='+ this.value +']') // phew 
    if (this.checked) { 
     apple.prop('checked', true) 
    } else { 
     apple.prop('checked', false) 
    }  
}) 

Demo

+0

谢谢拉姆森!这个解决方案工作完美;-) – 2012-07-26 19:31:50

0

检查此琴的工作环节。 http://jsfiddle.net/NfU68/

$('input').on('click', function() { 
    var value = $(this).val(); 
    var checked = $(this).is(':checked'); 
    $('input[value='+value+']').attr('checked', checked) 
}); 

这里,而不是输入您可以根据类或父标签使用自己的选择。我用于演示目的。

+0

感谢Vins,但是我使用了Raminson的脚本,它更适合我的代码! :-) – 2012-07-26 19:33:01

+0

正如你所愿...我会建议你去推广解决方案,而不是特定的问题,这将影响你的代码可扩展性。 – Vins 2012-07-26 19:36:06

+0

您的代码面临什么问题?让我知道我会尽力解决它。 – Vins 2012-07-26 19:37:49

0

以下解决方案将附加on()事件处理程序到checkbox元素以捕获任何change事件。然后,将采用当前的checkbox元素的value,并检查包含该值的所有其他checkbox元素。

$('input[type=checkbox]').on('change', function() { 
    $('input[value='+this.value+']').attr('checked', $(this).is(':checked')); 
}); 

演示:http://jsfiddle.net/z6H7j/

之前的版本1.7,使用delegate()不是作为on()在这一点上并不存在。

$(document).delegate('input[type="checkbox"]', 'change', function() { 
    $('input[value='+this.value+']').attr('checked', $(this).is(':checked')); 
}); 

演示:http://jsfiddle.net/8mQwV/

+0

感谢罗布,我尝试了你的解决方案,但我更好地使用Raminson的脚本 – 2012-07-26 19:32:29