2010-01-12 89 views
1

作爲一名學生,我試圖學習一些JQuery技巧。 這裏我的HTML當我再次檢查一個複選框時,自動重新檢查一個複選框

<div id="EngineGroup" class="OptionGroupStyle"> 
    <div id="GS300"><input id="GS300Check" name="GS300Check" type="checkbox" disabled="disabled" checked="checked"/>V6 250ch</div> 
    <div id="GS300Price">53.000 €</div> 
    <div id="GS430"><input id="GS430Check" name="GS430Check" type="checkbox"/>V8 283ch</div> 
    <div id="GS430Price">58.000 €</div> 
    <div id="GS450H"><input id="GS450HCheck" name="GS450HCheck" type="checkbox"/>V8 Hybride 345ch</div> 
    <div id="GS450HPrice">63.000 €</div> 
</div> 

GS300是默認選項。

  • 當 「GS430Check」 被選中 - > GS300和GS450H未被選中
  • 當 「GS450HCheck」 被選中 - > GS300和GS430是選中

這是確定的,與

$("#GS430Check").click(function() { 
     $("input[name=GS300Check]").attr("checked",false); 
     $("input[name=GS450HCheck]").attr("checked",false); 
}); 

相同的GS450H

但我怎麼能自動重新檢查GS300的defa當我檢查/取消選擇GS430或GS450H時,是否可以取消選擇? 我在jQuery中找不到像ondeCheck/ondeSelect這樣的東西,我錯過了什麼,或者我是一個真正的noob,他無法理解一些非常簡單的東西?

編輯:

$("#EngineGroup input").click(function() { 
    if (!$("#EngineGroup input:checked").length) { 
     $("#EngineGroup input:first").attr("checked", true); 
    } 
}); 

是偉大的工作:)

+6

這是一些奇怪的功能。不知怎的,單選按鈕聽起來更合適。無論如何,您應該爲所有3個複選框添加一個'click'或'onchange'事件處理程序,並在其中檢查是否所有3個複選框都未選中,然後重新檢查默認值。 – mpen 2010-01-12 02:10:13

+0

是的,我同意馬克。順便說一句,它應該是「取消」而不是「decheck」:) – 2010-01-12 02:12:10

+0

是的,我同意你關於單選按鈕(但你知道..老師..),我不能改變HTML代碼。 所以現在我是嘗試類似的東西,但我不工作(我甚至可以檢查複選框): $('#EngineGroup input [type = checkbox]')。change(function(){ if($(「input [name (「check」,false)&& $(「input [name = GS450HCheck]」)。attr(「checked」,false)&& $(「input [name = GS460Check]」)。attr 「選中」,FALSE)){ $( 「輸入[名稱= GS300Check]」)ATTR( 「選中」,真正的); 。} }); 我錯過了什麼?/ – Max 2010-01-12 02:21:16

回答

1

如果你不能改變的HTML,那麼我認爲它可能更容易只需保存複選框的當前狀態點擊一下,然後取消選中所有框,並將單擊複選框的狀態翻轉到與之前狀態相反的狀態。如果在此之後仍未檢查,則應該只檢查默認複選框。這樣你可以在一個處理程序中完成所有操作,而不是每個複選框都有一個處理程序。

1

你應該看看使用jQuery中的is()方法來看看是否有被檢查:

if ($('#GS430Check').is(':checked')) { 
    // do stuff... 
} 
0

忘記jQuery的attr()is()獲取和設置複選框的checkedness。這些任務極其複雜且效率低下。相反,使用複選框元素的簡單布爾型checked屬性:

if ($('#GS430Check')[0].checked) { 
    $('#GS300Check')[0].checked = true; 
} 
+0

感謝您的意見:) – Max 2010-01-12 12:35:42

相關問題