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

时间:2012-03-30 23:28:49

标签: jquery

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

不确定我做错了什么。

4 个答案:

答案 0 :(得分:2)

变化:

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;
}

答案 1 :(得分:1)

RepWhoringPeeHaa是对的。将字符串传递给$().val()意味着您正在尝试设置该值。 $().val()无法选择。我想你想要做的是使用

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

取代

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

答案 2 :(得分:0)

这可能会有所帮助

$("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

答案 3 :(得分:-1)

也许用if ($(".mySelect").val(":not(na)").length > 0)

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