javascript - 在所有表单字段不为空后反应启用按钮
问题描述
嘿家伙新反应试图实现一些简单的验证,但挣扎。我想要
- 如果表单字段为空,则禁用按钮
- 如果填写了所有表单字段,则启用按钮
我想即时完成所有这些工作,但一直在苦苦挣扎/找不到任何可靠的参考。这是我的代码
import React from 'react';
//import ReactDOM from 'react-dom';
import { Button, Form, FormGroup, Label, Input } from 'reactstrap';
export default class Forms extends React.Component {
constructor() {
super();
this.state = {
fname: '',
lname: '',
email: '',
password: '',
confirmPassword: '',
formSuccess: false
}
this.handleSubmit = this.handleSubmit.bind(this);
}
handleUserInput(e) {
const name = e.target.name;
const value = e.target.value;
this.setState({ [name]: value });
}
handleSubmit(e) {
e.preventDefault();
}
render() {
return (
<Form onSubmit={this.handleSubmit}>
<FormGroup>
<Label for="fname">First Name</Label>
<Input
value={this.state.fname}
onChange={(event) => this.handleUserInput(event)}
type="text"
name="fname"
id="fname"
placeholder="first name"
/>
</FormGroup>
<FormGroup>
<Label for="lname">Last Name</Label>
<Input
onChange={(event) => this.handleUserInput(event)}
value={this.state.lname}
type="text"
name="lname"
id="lname"
placeholder="last name"
/>
</FormGroup>
<FormGroup>
<Label for="email">Email</Label>
<Input
onChange={(event) => this.handleUserInput(event)}
value={this.state.email}
type="email"
name="email"
id="email"
placeholder="email"
/>
</FormGroup>
<FormGroup>
<Label for="password">Password</Label>
<Input
onChange={(event) => this.handleUserInput(event)}
type="password"
value={this.state.password}
name="password"
id="password"
placeholder="password"
/>
</FormGroup>
<FormGroup>
<Label for="confirmPassword">Confirm Password</Label>
<Input
onChange={(event) => this.handleUserInput(event)}
value={this.state.confirmPassword}
type="password"
name="confirmPassword"
id="confirmPassword"
placeholder="confirm password"
/>
</FormGroup>
<FormGroup check>
<Label check>
<Input type="checkbox" />{' '}
Check me out
</Label>
</FormGroup>
<Button color="primary" size="lg" disabled={!this.state.formSuccess}>Submit</Button>
</Form>
)
}
}
感谢所有的帮助
解决方案
向您的组件添加一个函数,如下所示:
isFormValid = () => {
const {fname, lname, email, password, confirmPassword} = this.state
return fname && lname && email && password && confirmPassword
}
然后将您的按钮更改为:
<Button color="primary" size="lg" disabled={!this.isFormValid}>Submit</Button>
这样你甚至不需要formSuccess
在你的状态。
推荐阅读
- javascript - how can i setup auto send email to me when click the link
- c# - 使用 C# 以编程方式“单击”网站链接
- java - IBM Redis 数据库 + 春季启动
- javascript - 如何从 Electron 上的预加载脚本中的渲染进程访问 jquery
- reactjs - 在 ReactJS 中包含 SVG 的正确方法是什么?
- git - 如何确定 Azure DevOps 中的 Git Tag 值?
- javascript - 出现错误 Vuetify 时打开一个对话框。有条件地打开对话框
- python - Webdriver:在保存到文件夹之前更改文件名
- firebase - 获取子值 Firebase 内的所有总值?
- powershell - MSIExec 通过 Powershell 安装