首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取多个选中下拉列表的选定值

如何获取多个选中下拉列表的选定值
EN

Stack Overflow用户
提问于 2013-11-20 00:33:14
回答 2查看 7.7K关注 0票数 0

我正在动态添加多个jquery选择的下拉列表,并将多个属性设置为true。如何获取所选下拉菜单的选项?最终用户将仅从一个状态下拉列表中选择值

我的HTML代码:

代码语言:javascript
复制
<div class="hide state" id="State-1">
<select name='state' id="state-1" multiple="" class="chosen-select choice stateOption" data-placeholder="Choose a State...">
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
</select>
</div>

<div class="hide state" id="State-2">
<select name='state' id="state-2" multiple="" class="chosen-select choice stateOption" data-placeholder="Choose a State...">
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
</select>
</div>

我的JS代码是:

代码语言:javascript
复制
jQuery(function($) {
  $(".chosen-select").chosen();
  $('.choice').on('change' , function(e, info){

    var stateVal = $(".stateOption").chosen().find("option:selected");  //console.log(stateVal);

    if(stateVal !== null) {
        $.each(stateVal, function(index){
            data.state.push($(this).val()); //console.log($(this).val());
        });
    }

  });
})

here is a fiddle with the provided code

EN

回答 2

Stack Overflow用户

发布于 2013-11-20 00:52:28

首先,让多个选择具有相同的name属性并不是一种好的做法。如果我们在讨论中去掉Javascript,那么在正常的表单提交过程中,这些元素将自然地相互冲突,并且在这种情况下,表单将遵循具有相同name属性的最后一个元素,而不管隐藏或不隐藏什么。

其次,如果您不需要支持multiple选择的select菜单,那么就不需要multiple属性。这只是个小插曲。

现在来看真正的问题--您无法确定当前显示的是什么下拉列表。老实说,我不知道浏览器现在会如何显示任何东西,特别是在两个div都包含hide类的情况下。

把所有这些放在一边,我认为您最好的选择是:使用模糊选择器并利用visible选择器。它看起来像这样:

代码语言:javascript
复制
<select name="state-1">
<select name="state-2">

$("select[name^=state]:visible").val();

此选择器将查找名称以"state“开头且可见的选择项。您避免了常规表单提交的冲突,而且,我认为您的一个更大的问题是,我们使用val()来获取当前值。这就是你所需要的。

还有一点,我注意到你有data-placeholder="Choose a state",除非你让一些Javascript在那里做一些(不必要的)花哨的动作,否则它不会工作。相反,我建议在您的select中添加此选项

代码语言:javascript
复制
<option value="">Select your state...</option>

位于选项列表的顶部意味着它在页面加载时被自动选中,如果值为空,则表示文本"Select your state...“不会作为值发送,您可以检查是否有空字符串进行验证。

票数 2
EN

Stack Overflow用户

发布于 2013-11-20 00:47:41

尝试一下,将值保存在两个数组中:

代码语言:javascript
复制
$(function () {
    var foo = [];
    $('#state-1').on('change', function (e) {
        console.clear()
        $('#state-1 :selected').each(function (i, selected) {
            foo[i] = $(selected).text();
        });
        console.log(foo);
    });
    var foo2 = [];
    $('#state-2').on('change', function (e) {
        console.clear()
        $('#state-2 :selected').each(function (i, selected) {
            foo2[i] = $(selected).text();
        });
        console.log(foo2);
    });

})

http://jsfiddle.net/2BQe7/2/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20076936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档