使用jQuery </select>很难获得<select>元素的值

时间:2013-12-18 02:50:32

标签: jquery select each option

HTML:

.....
<form id="manage">
    <label for="first_name">First Name:</label>
    <input class="required" type="text" name="first_name" id="first_name" />

    <label for="last_name">Last Name:</label>
    <input class="required" type="text" name="last_name" id="last_name" />

    <label for="gender">Gender:</label>
    <select class="required" name="gender" id="gender">
        <option selected value="m">Male</option>
        <option value="f">Female</option>
        <option value="u">Undecided</option>
    </select>
</form>
.....

jQuery的:

.....
$("#manage .required").each( function() {
    if ($(this).val() == "") {
        alert($(this).attr("id") + " is empty!"); // Code for debugging
        $(this).prev().addClass("error");
        is_error = true;
    }
});
.....

在上面的简单代码段中,如果error的值为空,我会尝试将<form>类添加到$(this).attr("id")中的任何元素。

问题是,由于某些原因,<select>没有获取first_name元素;我收到了last_namegender的提醒,但没有得到{{1}} ID的提醒。我已经被困在这个看似微不足道的问题上好几个小时了,但似乎无法弄清楚我错过了什么。

我可能只需要一个好的耳光,但任何非暴力的帮助将非常感激。

1 个答案:

答案 0 :(得分:2)

这与$(this).attr('id')无关,这是因为您的选择没有值为""的选项,其默认值为m

尝试添加一个:

 <select class="required" name="gender" id="gender">
    <option value="">--Select--</option>
    <option value="m">Male</option>
    <option value="f">Female</option>
    <option value="u">Undecided</option>
</select>

在旁注中,您可以使用this.value代替$(this).val()this.id代替$(this).attr('id')

<强> Fiddle