如何通过表单外的按钮提交表单?

IT技术 javascript reactjs jsx react-bootstrap
2021-05-20 02:11:23

我想通过表单外部的按钮提交表单并对该表单进行验证。我正在使用 react-bootstrap 中的 Form 标签。

我的代码不验证表单

<Form
    noValidate
    validated={validated}
    onSubmit={e=> this.handleSubmit(e)}>

    <Form.Control
        required
        placeholder="Product Name"
        onChange={e => this.setState({name: e.target.value })}
        pattern={"[A-Z a-z]{3,30}"}
    />
</Form>
<button type="button" value="send" onClick={(e) => this.handleSubmit(e)} className={"btn btn-primary"}>Save</button>
handleSubmit(event) {
    const form = event.currentTarget;
    if (form.checkValidity() === false) {
        event.preventDefault();
        event.stopPropagation();
    }
    else
        this.AddProduct();

    this.setState({ validated: true });
}
1个回答

理想情况下:不要那样做。表单元素是一个有用的结构元素。

失败了。form为按钮添加一个属性,其值等于id表单属性。

表单HTML5

按钮关联的表单元素(其表单所有者)。该属性的值必须是<form>同一文档中某个元素的 id 属性 如果未指定此属性,则该<button>元素将与祖先<form>元素相关联 (如果存在)。此属性使您能够<button><form>元素与文档中任何位置的元素相关联,而不仅仅是作为<form>元素的后代

—  MDN