2015-05-24 18 views
1

我目前在表單中有2個複選框類別,一個下拉列表和一個提交按鈕。按鈕應保持「禁用」狀態,直到選中一個類別A的複選框並選中一個類別B選項並選擇了選擇列表的選項。 它適用於複選框(當我沒有列表測試時),但列表有問題。 當我從上到下(func - > plat - > lang)填寫表單時,它不起作用。不知何故,當我先選擇「lang」然後選中複選框時,它會起作用。當我在選擇語言後檢查另一個複選框時,它也從上到下工作。這很奇怪。 因此,這裏的HTML:JQUERY檢查是否選擇了列表框選項,用作if循環中的條件

<h3>choose func</h3> 
<input type="hidden" name="func1" value="" /> 
<input type="checkbox" name="func1" value="1" id="func1" /> func1 <br/> 
<input type="hidden" name="func2" value="" /> 
<input type="checkbox" name="func2" value="1" id="func2" /> func2<br/> 
<input type="hidden" name="func3" value="" /> 
<input type="checkbox" name="func3" value="1" id="func3"/> func3<br/> 
<br/> 
<h3>choose plat</h3> 
<input type="hidden" name="plat1" value="" /> 
<input type="checkbox" name="plat1" value="1" id="plat1" /> plat1<br/> 
<input type="hidden" name="plat2" value="" /> 
<input type="checkbox" name="plat2" value="1" id="plat2" /> plat2<br/> 
<input type="hidden" name="plat3" value="" /> 
<input type="checkbox" name="plat3" value="1" id="plat3" /> plat3<br/> 
<input type="hidden" name="plat4" value="" /> 
<input type="checkbox" name="plat4" value="1" id="plat4" /> plat4<br/> 
<br/> 
<h3>choose lang</h3> 
<select name="sprache"> 
<option disabled selected> -- select an option -- </option> 
<option name="deutsch" id="deutsch">Deutsch</option> 
<option name="englisch" id="englisch">Englisch</option> 
</select> 
<br/><br/> 
<script> 
</script> 
<input type="submit" name="abfrage" class="inputButton" id="idAbfragen" value="Abfragen" disabled=""> 

而jQuery的/ JS:

$(function() { 
    $("#func1, #func2, #func3, #plat1, #plat2, #plat3, #plat4, #deutsch, #englisch").change(function() { 
     if (($("#func1").is(':checked') || $("#func2").is(':checked') || $("#func3").is(':checked')) 
     && 
     ($("#plat1").is(':checked') || $("#plat2").is(':checked') || $("#plat3").is(':checked') || $("#plat4").is(':checked')) 
     && 
     ($("#deutsch").is(':selected') || $("#englisch").is(':selected')))   
     { 
      $('.inputButton').attr('disabled', false); 
     } 
     else 
     { 
      $('.inputButton').attr('disabled', true); 
     } 
    }); 
}); 

我不知道爲什麼它不工作。您可以在我設置的小提琴重現此問題:https://jsfiddle.net/3zqf4fxv/

我希望有一個修復。 感謝和問候!

+1

變化'$(「#FUNC1,#FUNC2,#FUNC3,#plat1,#plat2,#plat3,#plat4,#deutsch,#englisch 「)'到'$(」:input「)'。 https://jsfiddle.net/j08691/3zqf4fxv/1/ – j08691

+1

非常感謝!它可以正常工作,並且還可以節省一些打字費用 – bababow

+0

您是否想要一個更具可擴展性的解決方案,以便您不將每個單獨的DOM元素傳遞到您的條件中? IE瀏覽器 - 例如,如果您有100個項目的列表,例如? –

回答

2

變化

$("#func1, #func2, #func3, #plat1, #plat2, #plat3, #plat4, #deutsch, #englisch") 

$(":input") 

jsFiddle example

問題在於你選擇使用#deutsch, #englisch。 select元素改變,而不是選項。 :input只是一個jQuery快捷方式,用於選擇您在示例中已有的內容,但請注意,如果您的頁面上有其他輸入元素,則這不太理想。您可以用select[name='sprache']替換#deutsch, #englisch

例:

$("#func1, #func2, #func3, #plat1, #plat2, #plat3, #plat4, select[name='sprache']") 

jsFiddle example

相關問題