javascript - 不允许输入字段中的空格React
问题描述
我有一个注册表单,它发送带有名字和姓氏的请求并且工作正常。但是,当用户输入时whitespace
,它会将其视为有效输入。验证错误是从 api 的响应中发送的,其中空白输入会给出错误。我试图修剪名字,submit()
认为它有空格,它将删除它并视为空白输入。但这似乎不起作用。我怎样才能实现它的逻辑来修剪空白而不是允许它。
export default class Signup extends Form {
constructor(props, context) {
super(props, context);
this.state = {
firstName: '',
lastName: '',
};
this.handleChange = this.handleChange.bind(this);
}
submit() {
let firstName=this.state.firstName.trim();
return this.app.register({
firstName: firstName,
lastName: this.state.lastName,
}).then(account => success())
.catch(e => {
this.setState({ error: `signup_form_error_${e}` });
})
}
handleChange(event) {
this.setState({
[event.target.name]: event.target.value
})
}
render(props, state) {
return <form onSubmit={this.form.submit} name="signup" noValidate>
<input type="text" name="firstName" value={this.state.firstName} onChange={this.handleChange} />
<input type="text" name="lastName" value={this.state.lastName} onChange={this.handleChange} />
<div class="s72-buttons">
<button type="submit"</button>
</div>
</form>;
}
}
解决方案
错误就onSubmit
在你身上,<form/>
你有这样的
this.form.submit
但this.form
不存在,默认行为发生
export default class Signup extends React.Component {
constructor(props) {
super(props);
this.state = {
firstName: '',
lastName: '',
};
this.handleChange = this.handleChange.bind(this);
this.submit = this.submit.bind(this);
}
submit(event) {
event.preventDefault();
const regexp = /^\S*$/;
const { firstName,lastName }= this.state;
if (!regexp.test(firstName) || !regexp.test(lastName)) {
// cancel process, whitespace found;
return;
}
return this.app.register({
firstName: firstName,
lastName: this.state.lastName,
}).then(account => success())
.catch(e => {
this.setState({ error: `signup_form_error_${e}` });
})
}
handleChange(event) {
this.setState({
[event.target.name]: event.target.value.trim();
})
}
render(props, state) {
return <form onSubmit={this.submit} name="signup">
<input pattern="/^\S*$/" type="text" name="firstName" value={this.state.firstName} onChange={this.handleChange} />
<input pattern="/^\S*$/" type="text" name="lastName" value={this.state.lastName} onChange={this.handleChange} />
<div class="s72-buttons">
<button type="submit">submit</button>
</div>
</form>;
}
}
推荐阅读
- android - 如何在特定设备文件夹的回收站视图中显示媒体文件
- c# - ExcelDataReader.AsDataSet() 将单个分数双精度值转换为多个分数
- c++ - 标准是否要求流构造函数不访问流缓冲区?
- python - 使用水印从时间戳和 id 在 pyspark 中执行批量连接
- javascript - Javascript本身发生更改时未初始化更改函数
- javascript - 数据表:突出显示与行中其他单元格不同的单元格
- git - 由于冲突,此分支无法重新设置基础
- java - 在特定位置初始化另一个数组时使用数组
- android - 如何为自定义按钮内的图像添加边距
- sql - 可以跨命名空间进行 SQL 查询吗?