2011-03-07 172 views
2

我有选择标记,并且要检查是否选择了飞蛾。JavaScript - 检查是否选择了<select>标记的选项

<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的一些选择-S工作,并为他们中的一些,其实不然。很明显,当选择“ - 月 - ”时,它会回传“ - 月 - ”的空白字符串(“空字符串”)。我做错了什么?检查标签选择的最佳方式是什么?

回答

5

浏览器并不总是有一个< .Value属性选择> - 我们曾经有过拿到<选项>的价值:

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

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

当然,如果您知道总是只有一个空白选项作为第一个选项,请检查selectedIndex == 0。

+0

+1! - 就是这样,等到你想要从单选按钮组中获得值时! – 2011-03-07 20:19:20

0

我相信整数是选项值更好的做法。无论如何,下面的代码片段不关心你的默认选项值是一个空字符串还是一个零值。

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