2012-07-26 35 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