2012-03-30 79 views
1

我有一個包含3個選擇元素的表單。默認情況下,每個選項都具有選項「na」,並且提交按鈕被禁用。我需要啓用該按鈕時,這三個選擇中的至少一個具有任何其他選項,但「NA」如果至少有一個選擇選項,則啓用按鈕

我試圖寫一個函數,這樣我可以檢查在網頁加載選項,以及:

JS

function myFunction() { 
    bt = $(".b"); 
    bt.attr("disabled", false).removeClass("disabledB"); 

    if ($(".mySelect").val(":not(na)").length > 0) { 
     bt.attr("disabled", true).addClass("disabledB"); 
     return false; 
    } 
} 

HTML

<table> 
<tr> 
    <td> 
    <select class="mySelect"> 
     <option value="na"></option> 
     <option value="1">value 1</option> 
     <option value="2">value 2</option> 
    </select> 

    <select class="mySelect"> 
     <option value="na"></option> 
     <option value="3">value 3</option> 
     <option value="4">value 4</option> 
    </select> 
    </td> 
</tr> 
<tr> 
    <td> 
    <input type="button" class="b" value="click me"> 
    </td> 
</tr> 
</table> 

不知道我是什麼做錯了。

+0

什麼'如果($( 「mySelect。 」)VAL(「:不是(NA)。」)長度> 0 ){'你不是在這裏設定價值嗎? – PeeHaa 2012-03-30 23:36:26

回答

1

RepWhoringPeeHaa是正確的。將字符串傳遞到$().val()意味着您正在嘗試設置值。 $().val()不能帶選擇器。我想你想要做的是使用

$('.mySelect option[value!=na]:selected').length == 0 

代替

$(".mySelect").val(":not(na)").length > 0 
+0

這是不正確的,因爲正在尋找匹配元素'> 0'而不是'== 0'。呃,好吧。 – iambriansreed 2012-03-31 00:33:00

-1

也許與if ($(".mySelect").filter(function() { return $(this).val() !== "na"; }).length > 0)

2

更改替換if ($(".mySelect").val(":not(na)").length > 0)

if ($(".mySelect").val(":not(na)").length > 0) { 
    bt.attr("disabled", true).addClass("disabledB"); 
    return false; 
} 

要:

if ($(".mySelect option[value!='na']:selected").size() > 0) { 
    bt.attr("disabled", true).addClass("disabledB"); 
    return false; 
} 
相關問題