我有一个表格,我希望人们在其中放置他们的电子邮件和消息。我将表单元素的 onSubmit 参数设置为我自己的函数,但是,看起来表单仍在使用默认的 onSubmit 函数,因为每当我单击提交按钮时页面总是刷新,并且不会打印出我说的话在我的 onSubmit 函数中打印。仔细观察表单的事件函数,我可以看到有一个onSubmit
函数是我想要做的,还有一个submit
函数正在刷新页面。出于某种原因,它永远不会运行我的功能(我从来没有看到我正在记录到控制台的内容)!这是我的代码:
表格内容:
<Card style={{marginLeft:"20%", marginRight:"20%"}}>
<Card.Body>
<Card.Title>Leave a Comment</Card.Title>
<Form onSubmit={this.email} id="comments">
<Form.Group>
<Form.Label>Email address</Form.Label>
<Form.Control type="email" placeholder="name@example.com" />
</Form.Group>
<Form.Group>
<Form.Label>Message</Form.Label>
<Form.Control as="textarea" rows="3"/>
</Form.Group>
<Button variant="primary" type="submit">
Submit
</Button>
</Form>
</Card.Body>
</Card>
电子邮件功能:
email = () => {
console.log("hello there I am working");
}
我看到了一种解决方法,它说在这样的 div 中包围表单:
<div
onKeyDown={e => e.stopPropagation()}
onClick={e => e.stopPropagation()}
onFocus={e => e.stopPropagation()}
onMouseOver={e => e.stopPropagation()}
onSubmit={e => e.stopPropagation()}
... can add other events if they are giving you issues
>
但这也没有用。关于出了什么问题的任何想法?