【问题标题】:Having a hard time getting the value of <select> element using jQuery很难使用 jQuery 获取 <select> 元素的值
【发布时间】:2014-01-06 01:57:00
【问题描述】:

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;
    }
});
.....

在上面的简单代码 sn-p 中,我尝试将 error 类添加到 &lt;form&gt; 中的任何元素(如果其值为空)。

问题是,$(this).attr("id") 出于某种原因没有拾取&lt;select&gt; 元素;我收到了first_namelast_name 的警报,但没有gender id 的警报。我已经被这个看似微不足道的问题困扰了几个小时,但似乎无法弄清楚我错过了什么。

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

【问题讨论】:

    标签: jquery select each option


    【解决方案1】:

    $(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

    【讨论】:

    • @Vivendi75 换句话说,您原来的select 的默认值是"male" 而不是""
    • @PSL - 我完全理解你在这里解释的内容。事实上,我和你有同样的想法——我希望if 语句块不会为select 执行,因为没有一个选项包含空值。但是,情况似乎并非如此。我仍然收到select 的警报,但它显示为(undefined) is empty!
    • @Vivendi75 为此,您需要执行 return false 退出循环。像这样jsfiddle.net/jdzbw
    • @PSL - 在你的帮助下我知道了,非常感谢! (旁注+1)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 2021-07-16
    • 2019-01-17
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多