当前位置: 首页 > 知识库问答 >
问题:

如何在React JS中获得多个选择的选项值?

师曦
2023-03-14
<Multiselect label='Select College' ref="collegeList" onChange={this.handleChange} multiple >
         <option value='college1'>college1</option>
         <option value='college2'>college2</option>
</Multiselect>

此组件来自https://github.com/skratchdot/react-bootstrap-multiselect

handleChange()函数中应该写什么?

共有3个答案

施招
2023-03-14

我建议在组件中设置一个名为selectedItem的状态。

然后,onChange回调从Bootstrap MultiSelect文档中获取参数元素检查。元素具有val()方法,该方法返回分配给选项的值。

因此,handleChange可以通过以下方式实现

handleChange: function (element, checked) {
    var newSelectItems = _.extend({}, this.state.selectItems);
    newSelectItems[element.val()] = checked;
    this.setState({selectItems: newSelectItems})
},
getInitialState: function () {
     return {selectItems: {}};
}

这样,每次单击一个元素时,它的checked属性都会保存在组件状态中,如果需要根据MultiSelect所选值更改任何内容,这非常方便。

请注意,对于上述代码,您需要下划线或Lodash库。这是必要的,因为React不能合并嵌套对象,正如这里所回答的。

穆睿才
2023-03-14

不幸的是,react bootstrap multiselect似乎没有公开用于获取当前选定项的任何类型的API,因此您必须直接从DOM查询它们。试着这样做:

handleChange: function () {
    var node = React.findDOMNode(this.refs.collegeList);
    var options = [].slice.call(node.querySelectorAll('option'));
    var selected = options.filter(function (option) {
        return option.selected;
    });
    var selectedValues = selected.map(function (option) {
        return option.value;
    });

    console.log(selectedValues);
}

如果您使用的是jQuery,可以将其简化为:

handleChange: function () {
    var node = $(React.findDOMNode(this.refs.collegeList));
    var selectedValues = node.children('option:selected').map(function(option) {
        return option.value;
    });

    console.log(selectedValues);
}
欧阳声
2023-03-14

这里有一个更干净的es6方法:)

let selected = [...this.refs.select]
  .filter(option => option.selected)
  .map(option => option.value)

好了,所有选择的选项!

 类似资料:
  • 以下代码起作用: 如何将第二行重构为: 您对所选的******选项使用了什么?

  • 问题内容: 我有一个html表单,该表单具有一个选择列表框,您可以从中选择多个值,因为其multiple属性设置为multiple。考虑表单方法为“ GET”。表单的html代码如下: 我想在display.php页面的选择列表框中显示选定的值。那么如何使用数组在display.php页面上访问选定的值。 问题答案: 如果要将PHP 视为选项数组,只需将方括号添加到 select元素 的名称中,如

  • 问题内容: 所以,我想用香草JS做的事情很简单,但是我使用的是AngularJS,我想知道如何在框架内以最佳方式做到这一点。我想在多个选择框中更新所选的选项。我不想添加或删除任何选项。这是我的HTML外观: 使用以下数组,我想以编程方式从此列表中选择/取消选择选项: 当我在范围中设置此数组时,我希望选择框取消选择不是蓝色或红色的任何内容,然后选择蓝色和红色。我在Google网上论坛上看到的标准回复

  • 问题内容: 如何使用Selenium WebDriver和Python获取选定的选项: 有人有解决方案吗? 我正在使用它来获取select元素: 是否有类似的东西或类似于“ getFirstSelectedOption”的东西: 然后,我想用类似的方式验证内容: 问题答案: 这很容易处理- 类:

  • 问题内容: 我想选择,,从多个选择其中有10个选项。我只想选择这三个选项。 HTML代码: selenium键代码: 我尝试使用此代码。使用此代码,我可以选择第一个选项,即“ P0_ENGLISH”。但是,选择第一个选项后,我得到一个错误: 问题答案: 要从 Multi Select 元素中选择多个 选项 ,可以使用 ActionChains 模拟 Control单击* ,如下所示: *