我有一个包含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 :(得分: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)