如果至少有一个选择选项,则启用按钮

问题描述:

我有一个包含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

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

这可能有助于

$("select").change(function() { 
    if ($("option:selected").not("option[value=na]"){ 
     $("input[type=button]").removeAttr("disabled"); 
    } 
}); 

以下是参考几篇文章

http://api.jquery.com/selected-selector/

http://docs.jquery.com/Frequently_Asked_Questions#How_do_I_disable.2Fenable_a_form_element.3F

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

更改替换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; 
}