【问题标题】:Why is dropdown returning incorrect value?为什么下拉菜单返回不正确的值?
【发布时间】:2014-09-04 16:53:22
【问题描述】:

我遇到了一个问题,我使用 jQuery 来获取下拉列表的值,但是,它只返回最初选择的值。该页面是用 php 编写的,并从数据库中获取值。如果先前选择了一个 select 元素,则具有该值的选项具有 selected 属性。结果如下:

<select name="dropdown1">
    <option value="1">1</option>
    <option value="2" selected>2</option>
    <option value="3">3</option>
</select>

我在使用 javascript 时遇到的问题是,无论选择什么,具有要启动的 selected 属性的选项始终作为该输入的值返回。实际选择的选项无关紧要,选项 2 始终作为选定元素返回。这是我正在使用的 javascript。

    $.each( inputs, function( key, value ){
        var element = $( "[name='" + key + "']" );
        var this_val = $( element ).val();
        console.log( this_val ); //always returns 2
    });

变量输入是一个关联数组,其键值对与表单中的输入名称匹配。您可以就为什么会发生这种情况提供任何帮助,我们将不胜感激。谢谢!

【问题讨论】:

  • 请在jsfiddle.net 上创建一个功能示例我不明白这个问题。请包括触发$.each 被调用的操作。
  • 向我们展示您的 inputs 收藏中的内容...
  • 它对我有用:jsfiddle.net/barmar/PTkKR/5
  • 是的,这就是我遇到的问题。我试图将所有内容都放入 jsfiddle,但它没有重现问题。努力找一个例子来展示。
  • 输入中的每个元素都类似于“student_physical_address1”:“student_mailing_address1”是对应输入名称的数组。

标签: javascript jquery select input


【解决方案1】:

如果你做了类似var inputs = $('select') 的操作,那么keyselect 节点数组的下标,而不是实际的节点名称。不过value代表的是key对应的节点,所以var element = $( "[name='" + value.name + "']" );就行了

【讨论】: