我在页面上有2个选择框,其中包含可变数量的选项。
例如:
<fieldset>
<label for="fizzwizzle">Select a Fizzwizzle</label>
<select name="fizzwizzle" id="fizzwizzle" size="10">
<option>Fizzwizzle_01</option>
<option>Fizzwizzle_02</option>
<option>Fizzwizzle_03</option>
<option>Fizzwizzle_04</option>
</select>
</fieldset>
<fieldset>
<label for="fizzbaggot">Select a Fizzbaggot</label>
<select name="fizzbaggot" id="fizzbaggot" size="10">
<option>Fizzbaggot_01</option>
</select>
</fieldset>
我想验证这两个选择框都有一个选定的选项。我最初的想法是简单地使用JQuery,但我似乎无法弄清楚如何做到这一点。到目前为止,我的尝试都是徒劳的,但我有以下代码,我认为应该使用缺少的链接。
function verify_selectboxen_selection() {
var allSelected = true;
$('select').each(function() {
/* if select box doesn't have a selected option */
allSelected = false;
break;
});
if (!allSelected) {
alert('You must select a Job and a Disposition File.');
}
return allSelected;
}
看起来很简单。想法?
答案 0 :(得分:3)
在jQuery中,您可以使用:selected
选择器来获取所选的总选项。这个数字与选择的数量相匹配:
if ($("select").length === $("option:selected").length) {
// they match
}
答案 1 :(得分:2)
我想验证这两个选择框都有一个选定的选项
(非multiple
)select
框不不可能有选定的选项!如果您未在其中一个selected
上声明option
,则浏览器会自动选择第一个选项。
所以:return true;
: - )
如果你想要一个'未选择的'初始状态,你必须为它添加一个无选项option
,通常是第一个:
<select name="fizzbaggot">
<option value="" selected="selected">(Select a fizzbaggot)</option>
<option>foo</option>
<option>baz</option>
<option>bar</option>
</select>
然后你可以通过说:
来检查是否选择了那个选项$('select').each(function() {
if ($(this).val()!=='')
allSelected= false;
});
或者,如果您可能希望将空字符串用作有效值,则只需查看所选选项的索引:
$('select').each(function() {
if (this.selectedIndex===0)
allSelected= false;
});
答案 2 :(得分:1)
您可以使用:selected selector进行此操作。
var unselected = []
$('select').each(function(){
if (0 == $(this).find('option:selected').length) {
unselected.push(this.id);
}
});
if (unselected.length != 0) {
// unselected contains the ids of non-selected select boxes
}
或者您可以使用val()检查其值。这假设您有一个没有值的默认选项(即空字符串值)。
var unselected = []
$('select').each(function(){
if ('' == $(this).val()) {
unselected.push(this.id);
}
});
if (unselected.length != 0) {
// unselected contains the ids of non-selected select boxes
}
答案 3 :(得分:0)
function checkSelects() {
return $("select :selected").length == $("select").length;
}
alert(checkSelects());