当前位置: 首页 > 面试题库 >

反应-表单提交后清除输入值

东郭腾
2023-03-14
问题内容

我面临一个相当愚蠢的问题。我正在创建我的第一个React应用程序,遇到一个小问题,提交表单后,我无法清除输入值。尝试谷歌搜索此问题,在这里找到了一些类似的线程,但我无法解决。我不想更改组件/应用程序的状态,而只是将输入的值更改为空字符串。我尝试清除函数中输入的值onHandleSubmit(),但出现错误:

“无法设置未定义的属性’值’”。

我的SearchBar组件:

import React, { Component } from "react";

class SearchBar extends Component {
  constructor(props) {
    super(props);

    this.state = {
      city: ""
    };

    this.onHandleChange = this.onHandleChange.bind(this);
    this.onHandleSubmit = this.onHandleSubmit.bind(this);
  }

  render() {
    return (
      <form>
        <input
          id="mainInput"
          onChange={this.onHandleChange}
          placeholder="Get current weather..."
          value={this.state.city}
          type="text"
        />
        <button onClick={this.onHandleSubmit} type="submit">
          Search!
        </button>
      </form>
    );
  }

  onHandleChange(e) {
    this.setState({
      city: e.target.value
    });
  }

  onHandleSubmit(e) {
    e.preventDefault();
    const city = this.state.city;
    this.props.onSearchTermChange(city);
    this.mainInput.value = "";
  }
}

export default SearchBar;

问题答案:

您有一个受控组件,其input值由决定this.state.city。因此,一旦提交,您必须清除状态,这将自动清除您的输入。

onHandleSubmit(e) {
    e.preventDefault();
    const city = this.state.city;
    this.props.onSearchTermChange(city);
    this.setState({
      city: ''
    });
}


 类似资料:
  • 问题内容: 我有一个简单的形式,像这样: 与我的控制器如下: 我想做的是在提交后清除文本输入,因此我只需清除模型值: 除了现在,因为“需要”表单输入,所以在表单输入周围出现了红色边框。这是正确的行为,但不是我在这种情况下想要的……所以,我想清除输入,然后模糊输入元素。这导致我: 现在,我知道从这样的控制器修改DOM在Angular文档中是很陌生的-但是还有更多的Angular方式可以做到这一点吗?

  • 问题内容: 我要在验证后重置表单。当前,表单在提交并有效后仍会显示以前的数据。基本上,我希望表单在所有字段都干净的情况下返回到原始状态。正确的做法是什么? 问题答案: 问题是,即使数据已验证并已处理,您始终使用传递的任何数据来呈现表单。此外,浏览器会存储上一个请求的状态,因此,如果此时刷新页面,浏览器将重新提交表单。 处理成功的表单请求后,重定向到页面以获取新状态。

  • 问题内容: 我一直在尝试React。在我的实验中,我正在使用Reactstrap框架。当我单击按钮时,我注意到HTML表单已提交。有没有一种方法可以防止单击按钮时提交表单? 我在这里重新创建了我的问题。我的表单很基本,看起来像这样: 我想念什么? 问题答案: 我认为首先要注意的是,如果没有javascript(纯HTML),则在单击或时会提交元素。在javascript中,您可以通过使用事件处理程

  • 当我在做表单处理时,我有一个form.html文件和一个process.jsp文件。html将显示表单,action设置为process.jsp。我需要检查用户是否填写了输入字段。 如果用户没有输入任何内容并单击submit按钮,request.getParameter(“name”)的返回值是什么。因为我不知道它是空值还是空字符串,所以我都检查了。而只是想弄清楚它是空字符串还是空字符串。

  • 问题内容: 我正在使用此代码尝试通过表单提交值,但似乎未提交任何内容… 我通常会使用复选框或单选按钮来显示多个选项,但是我想使用图像来执行此操作。 此代码是否错误? 所以我想在value =“ myValue”中传递值。 表单工作正常,所以这不是问题,我只需要输入部分不提交的帮助,因为我知道这是可行的。 谢谢 输入type =“ image”仅将该图像定义为提交按钮,而不定义为可以将值传递给服务器

  • 我的页面中有以下javascript,它似乎不起作用。 我想在回车时禁用提交表单,或者更好的是,调用我的ajax表单提交。这两种解决方案都是可以接受的,但是我上面包含的代码不会阻止表单提交。