JavaScript - 检查是否选择了<select>标记的方法</select>

时间:2011-03-07 19:13:55

标签: javascript select tags

我有一个选择标签,我想检查是否选择了飞蛾。

 <select name="Birth_Month">
    <option value="" SELECTED>- Month -</option>
    <option value="January">January</option>
    <option value="Fabruary">Fabruary</option>
    <option value="March">March</option>
    <option value="April">April</option>
    <option value="May">May</option>
    <option value="June">June</option>
    <option value="July">July</option>
    <option value="August">August</option>
    <option value="September">September</option>
    <option value="October">October</option>
    <option value="November">November</option>
    <option value="December">December</option>
</select>

这样做:

if (document.registration_form.Birth_Month.value === '') 
{
    alert('Please fill select Month!');
}

但是这个JavaScript用于某些select-s工作,对于其中一些而言,却没有。显然,当选择“ - 月 - ”时,它会返回“ - 月 - ”,“”(空字符串)。我做错了什么?检查标签选择的最佳方法是什么?

2 个答案:

答案 0 :(得分:7)

浏览器并不总是具有&lt; select&gt;的.value属性 - 我们以前必须得到&lt; option&gt;的价值:

var birthMonth=document.registration_form.Birth_Month;
if(birthMonth.options[birthMonth.selectedIndex].value===''){

我现在使用jQuery .val()。我不记得哪些浏览器缺少select.value属性,也许这些浏览器太旧了,我们不再需要担心它们了。但jQuery不使用select.value - 它遍历每个选项以查找所选选项的值。

当然,如果你知道你总是只有一个空白选项作为第一个选项,那么只需检查selectedIndex == 0.

答案 1 :(得分:0)

我认为整数是选项值的更好实践。无论如何,下面的代码片段并不关心你的默认选项值是空字符串还是零值。

var birthMonth = document.registration_form.Birth_Month;
if(birthMonth.options[birthMonth.selectedIndex].value === false){
    alert('Please fill select Month!');
}