ReactJS中如何处理多选表单

2023-11-23

我尝试处理一个多种表单选择选项,在 ReactJS 中。我试图激发 javascript 经典代码的灵感来处理这个问题,但我失败了。

我的代码只是不向我发送所选的值。怎么处理呢?

这是我的代码:

  class ChooseYourCharacter extends React.Component {

      constructor(props) {
        super(props);
        this.state = {value: 'coconut'};

        this.handleChange = this.handleChange.bind(this);
        this.handleSubmit = this.handleSubmit.bind(this);
      }

      handleChange(event) {
        this.setState({value: event.option});
      }

      handleSubmit(event) {
        alert('Your favorite flavor is: ' + this.state.value);
        event.preventDefault();
      }

      render() {
        return (
          <form onSubmit={this.handleSubmit}>
            <label>
              Pick your favorite La Croix flavor:
              <select multiple={true} value={this.state.value} onChange={this.handleChange}>
                <option value="grapefruit">Grapefruit</option>
                <option value="lime">Lime</option>
                <option value="coconut">Coconut</option>
                <option value="mango">Mango</option>
              </select>
            </label>
            <input type="submit" value="Submit" />
          </form>
        );
      }
    }
    ReactDOM.render(
             <ChooseYourCharacter/>,
             document.getElementById('root')
    )

根据我的基本理解,当你尝试处理一个选择表单元素在reactJS中,您在HTMLOptionsCollection中生成一个对象。

该对象方法和属性的根本根源是e.目标.选项.

您的项目存储在 e.target.options.value 属性中。

要访问存储在 options.value 对象中的值,您可以使用 [i] 循环值,即 e.target.options[i].value 属性。

e.target.options[i].value 返回字符串数据类型。

按照我刚才所说的,我假设对象的存储遵循数字递增约定,如下所示:

e.target.options[i].value 其中 { [i] : 值, [i +1] : 值 (...)}...

通过使用 e.target.options[i].selected 您可以控制是否有值存储在特定位置。

e.target.options[i].selected 返回一个布尔值,对于处理代码流很有用。

现在就看你了。


这里是我使用 JavaScript 代码处理 JSX 中的多个选择表单的代码:

// Create the React Component


    class ChooseYourCharacter extends React.Component {

          // Set the constructor
          constructor(props) {
            super(props);
            this.state = {value: 'coconut'};

            // bind the functions
            this.handleChange = this.handleChange.bind(this);
            this.handleSubmit = this.handleSubmit.bind(this);
          }

          // extract the value to fluently setState the DOM
          handleChange (e) {
            var options = e.target.options;
            var value = [];
            for (var i = 0, l = options.length; i < l; i++) {
              if (options[i].selected) {
                value.push(options[i].value);
              }
            }
            this.setState({value: value});
          }

          // display in client-side the values choosen
          handleSubmit() {
             alert("you have choose :" + this.state.value);

         }


    (...)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ReactJS中如何处理多选表单 的相关文章

随机推荐

  • Webstorm 的 Sass 文件观察器

    我正在尝试在 NodeJS 项目中使用 sass 这是我使用 nodejs 安装的库 https www npmjs org package node sass 我在这个项目中使用 webstorm 但无法让 Sass 文件观察器工作 即使
  • 从脚本与命令行在节点中分配全局变量

    我有以下脚本 script js var bar bar1 function foo console log this bar this bar console log global bar global bar foo Running n
  • 为什么在 Windows 中命名文件“con.txt”会使 Python 写入控制台而不是文件?

    我需要帮助调试 Python 中的一些奇怪的文件行为 采取以下脚本 write con py f open con txt w f write hi 在 Linux 中 这会创建一个名为con txt与内容hi 在 Windows 中这样写
  • 电路/方框图绘制

    我正在寻找用于 漂亮的 电路 框图绘制的算法或可视化工具 我也对这个问题的一般表述感兴趣 我所说的 电路绘图 是指利用 I O 端口及其连接 电线 探索框图 矩形 的位置和路线的能力 这些框图可以是分层的 即某些块可能具有一些嵌套的内部子结
  • 将 Word 文档文本转换为 HTML 的库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 是否有一个 Net开源库可以将word文档转换为HTML以在网页内显示 我知道有几种将 word 文档转换为 html 文件的工具 但我的要求是在
  • Rails 3.1 身份映射问题?

    有谁知道 Rails 3 1 IdentityMap 功能的关键问题导致默认情况下强制禁用该功能 我确信存在一些小具体问题 但是在为已构建的 Rails 3 1 应用程序启用它之前 是否有任何人应该注意的重大问题 来自代码中的注释 Acti
  • python-opencv AttributeError:“模块”对象没有属性“createBackgroundSubtractorGMG”

    我正在尝试遵循以下中给出的教程 https opencv python tutroals readthedocs org en latest py tutorials py video py bg subtraction py bg sub
  • 在 Mac OS 上设置 tkinter 图标

    我正在尝试更改 Mac OS 的 tk 应用程序上显示的图标 上次我检查此代码适用于 Windows 目标是使该解决方案能够跨所有平台工作 root tk Tk app Application master root app master
  • Clion 无法识别我的快速工具链路径

    我正在尝试为 swift 项目配置 clion 但它无法识别 swift 工具链路径 which swift 产生输出 usr bin swift bin swift 所以工具链就在那里 但 clion 只是不认识它 我该如何进行这项工作
  • jQuery 工具提示 onClick?

    我已经找了很长时间了 似乎找不到一个使用以下内容的 jQuery 工具提示插件 onClick 代替hover 使其像切换按钮一样工作 淡入淡出 使用工具提示的想法是 我有一些想要在其中显示内容的链接 虽然普通的工具提示 这可能是我出错的地
  • 如何在 Windows 上安装 pip?

    pip是替代品easy install 但我应该安装pip using easy install在 Windows 上 有没有更好的办法 Python 3 4 和 2 7 9 好消息 Python 3 4 2014 年 3 月发布 和Pyt
  • MySQL 表的主键是否应该公开?

    我有许多描述模型的 MySQL 表 例如 用户 业务 等 这些表的主键是否应该暴露给客户端 我主要是从安全角度来问 但是还有其他我没有想到的考虑因素吗 暴露您的主键 特别是如果它们是可预测的 是一个称为不安全直接对象引用的漏洞 通过使用如下
  • 如何设置 NSDate 上的时间?

    我想用我想要的小时 分钟 秒设置 NSDate 时间 目前我正在使用 NSDate 组件 但它没有给出期望的结果 comps setHour hours comps setMinute 0 comps setSecond 0 NSDate
  • 有人有 SourceForge 的 Xselerator XSL IDE 副本吗? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我多年来一直使用 Marrowsoft Xselera
  • 使用 python pandas 比较两个 csv 文件

    我有两个 csv 文件 均由两列组成 第一个具有产品 ID 第二个具有序列号 我需要查找第一个 csv 中的所有序列号 并在第二个 csv 上查找匹配项 结果报告将在单独的列中包含匹配的序列号以及每个 csv 中相应的产品 ID 我确实修改
  • ASP.NET MVC 4 C# HttpPostedFileBase,如何存储文件

    Model public partial class Assignment public Assignment this CourseAvailables new HashSet
  • 我可以使用 Boost.Asio 在多线程 I/O 服务上同步读取套接字并设置超时吗?

    我有一个使用 Boost Asio 进行 TCP 和 UDP 套接字通信的应用程序 我知道 Asio 中的 A 代表异步 因此该库致力于鼓励您尽可能使用异步 I O 我有一些情况 同步套接字读取更可取 但与此同时 我想为所述接收调用设置超时
  • created_at 字段有时会变成 nil

    I think created at总是设置为ActiveRecord创建记录的时间 但我发现有些记录是用null创建的created at 有什么条件可以导致这种情况吗 这些列created at updated at created o
  • 使用 google-rfc-2445 (iCalendar) 时,某些情况下会返回开始日期

    我运行了很多 RRULE 只是为了测试性能谷歌 rfc 2445 Java 实现IETF RFC 2445 日历 我发现在某些情况下我在方法的返回列表中得到了开始日期 测试非常简单 private static void runGoogle
  • ReactJS中如何处理多选表单

    我尝试处理一个多种表单选择选项 在 ReactJS 中 我试图激发 javascript 经典代码的灵感来处理这个问题 但我失败了 我的代码只是不向我发送所选的值 怎么处理呢 这是我的代码 class ChooseYourCharacter