【发布时间】:2018-09-21 21:45:17
【问题描述】:
我正在尝试使用 onBlur 事件隐藏表单,但是当我尝试单击提交按钮时,不会触发 onSubmit 函数
我想在发送表单后或当用户离开包装表单的 div 时隐藏它。
https://codesandbox.io/s/rrz10y2mnp
index.js
import React from "react";
import ReactDOM from "react-dom";
import "./styles.css";
function App() {
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
</div>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
test.ts
import React, { Component } from "react";
export default class Test extends Component {
state = {
showing: false
};
showInput = () => {
this.setState({ showing: false });
};
addNew = () => {
this.setState({ showing: true });
};
sendForm = evt => {
evt.preventDefault();
console.log("clicked");
};
render() {
return (
<div>
{!this.state.showing ? (
<button onClick={this.addNew}>Add a new</button>
) : (
<div onBlur={this.showInput} tabIndex="1">
<form onSubmit={this.sendForm}>
<input autoFocus={true} type="text" />
<button type="submit">PUSH</button>
</form>
</div>
)}
</div>
);
}
}
【问题讨论】:
-
如果您不想在完成
sendForm之后隐藏表单,为什么不在sendForm函数的末尾进行隐藏? -
我将创建很多具有相同表单的卡片,这就是我想用 onBlur 事件隐藏它的原因
-
这并不妨碍您将表单隐藏在
sendForm中,如果确实如此,请解释 -
问题是当我尝试使用提交按钮时,onBlur事件触发而不执行onSubmit函数
标签: javascript reactjs