2011-11-30 122 views
2

我知道標題有點有線。JQuery - 從選定的下拉列表中刪除複選框

我想要的是我有一個下拉菜單,裏面有一些選項,其中兩個選項是「特殊的」。當您選擇這兩個中的一個,3個複選框應gryed出/刪除/等..

繼承人一些代碼:

HTML:

//THE DROPDOWN 
<select id="pow-abo" style="float:left;"> 
<option id="data6" value="149">XXXX</option> 
<option id="data11" value="199">XXXX</option> 
</select> 

//THE CHECKBOXES 
<div id="pakkerPow"> 
<input id="surfstart" type="checkbox" value="29" />XXXX<br/> 
<input id="surfmini" type="checkbox" value="49" />XXXX<br/> 
<input id="surfmaxi" type="checkbox" value="99" />XXXX<br/> 
</div> 

的Jquery:

// THE JQUERY DROPDOWN 
$('#pow-abo').change(function(){ 
    powAbo = parseFloat($('#pow-abo').val()); 
    if($('#pow-abo').id() == 'data6' || $('#pow-abo').id() == 'data11') 
    { 
     $('#surfstart').hide(); 
     $('#surfmini').hide(); 
     $('#surfmaxi').hide(); 
    } 
    visResultat2(); 
}); 

回答

3

您的代碼有幾個問題。他們圍繞着您的if聲明。請看下面的片段:

$('#pow-abo').id() 

的第一個問題是,id不是jQuery對象的方法。第二個問題是#pow-aboselect元素,而不是選定的選項。它看起來像你試圖獲得所選選項的id

要獲得所選擇的選項,作爲一個DOM元素(不是一個jQuery對象),你可以做這樣的事情:

var selected = $(this).find(":selected")[0]; 

你會那麼可以使用selected.id獲得所選選項的id

$('#pow-abo').change(function() { 
    var selected = $(this).find(":selected")[0], 
     powAbo = parseFloat($('#pow-abo').val()); 
    if(selected.id == 'data6' || selected.id == 'data11') { 
     $('#surfstart').hide(); 
     $('#surfmini').hide(); 
     $('#surfmaxi').hide(); 
    } 
}); 

請注意,您也可以縮短hide呼叫到一個:

$("#surfstart, #surfmini, #surfmaxi").hide(); 

或者,可以隱藏所有的內部#pakkerPow複選框:

$("#pakkerPow :checkbox").hide(); 
+0

謝謝,這樣做的工作..它如何刪除文本,也與複選框? –

+0

如果你想隱藏'#pakkerPow'中的所有內容,爲什麼不隱藏:'$(「#pakkerPow」)。hide();'? –

+0

不想隱藏每個選項,只是這3個選項以及隨附的文本。 TEXT HERE

0

爲了「灰化」或禁用表單元素,必須將禁用的屬性添加到元素。

而不是

$('#surfstart').hide(); 

做這個

$('#surfstart').attr('disabled','disabled'); 

要啓用已禁用的元素

$('#surfstart').removeAttr('disabled');

0

,如果你真的想使用的顯示和隱藏看看這個演示: http://jsfiddle.net/xAcz7/

代替看ID即時尋找在值爲隱藏的選項1和2,並顯示選項3. 而不是隱藏3複選框即時隱藏包含複選框的div。節省您的行代碼;) 希望這有助於

0

您的測試應該在選擇價值,而不是對IDS:

// THE JQUERY DROPDOWN 
$('#pow-abo').change(function(){ 
    powAbo = parseFloat($(this).val()); 
    if(powAbo == '199' || powAbo == '149') 
    { 
    $("#pakkerPow input").attr("disabled", "disabled"); 
    } 
    visResultat2(); 
}); 
1

我會做這樣:http://jsfiddle.net/pZcAF/6/

簡而言之:

  • 你有一對夫婦的錯誤在你的jQuery
  • hide()複選框插件禁用它們
  • 你永遠不會重新啓用(或show())回的TEAD
在本例中(作爲獎金,如果你覺得它有用)

附加功能:

  • 檢查一個給定類的「特殊」選項(允許您有一個動態創建的特殊選項列表)
+0

這是一個更好的和_不馬虎解決方案。 – Kyle

相關問題