You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ant Design模态框内嵌表单无法提交的问题求助

Ant Design模态框内嵌表单无法提交的问题求助

大家好,我最近在开发React项目时遇到了一个头疼的问题:我在Ant Design的模态框里嵌套了一个表单,点击提交按钮后完全没有反应,也看不到任何错误提示,实在找不到问题出在哪里。

我的组件里包含两个表单,主表单正常显示在页面中,当用户点击按钮打开模态框后,需要在模态框里提交第二个表单。我已经给模态框的提交按钮绑定了modalForm.submit(),也给表单设置了onFinish方法,但就是触发不了提交逻辑。

以下是我的完整组件代码:

import { useState } from 'react';
import { Card, Form, Select, Button, Modal, Input } from 'antd';

const SingleTransfer = () => {
  const [form] = Form.useForm();
  const [modalForm] = Form.useForm();
  const [bankLoading, setBankLoading] = useState(false);
  const [loading, setLoading] = useState(false);
  const [open, setOpen] = useState(false);

  const showModal = () => {
    setOpen(true);
  };

  const handleCancel = () => {
    setOpen(false);
  };

  const handleSubmit = (values) => {
    console.log("values ", values);
  };

  return (
    <div>
      <Card title="Single Transfer">
        <Form
          form={form}
          name="basic"
          labelCol={{ span: 8 }}
          wrapperCol={{ span: 16 }}
          style={{ maxWidth: 600 }}
          initialValues={{ remember: true }}
        >
          {bankLoading && (
            <Form.Item>
              <div>Loading banks. Please Wait...</div>
            </Form.Item>
          )}
          <Form.Item
            label="Bank Name"
            name="bank_code"
            rules={[{ required: true, message: 'Please input your bank name!' }]}
          >
            <Select
              showSearch
              placeholder="Select a Bank"
              optionFilterProp="children"
            />
          </Form.Item>
          <Form.Item wrapperCol={{ offset: 8, span: 16 }}>
            <Button type="primary" htmlType="submit">
              Submit
            </Button>
          </Form.Item>
        </Form>

        <Button type="primary" onClick={showModal}>
          Open Modal with customized footer
        </Button>

        {/* 模态框内的第二个表单 */}
        <Modal
          form={modalForm}
          forceRender={true}
          getContainer={false}
          open={open}
          title="Pin"
          onOk={form.submit}
          onCancel={handleCancel}
          footer={[
            <Button key="back" onClick={handleCancel}>
              Cancel
            </Button>,
            <Button key="submit" type="primary" htmlType='submit' loading={loading} onClick={modalForm.submit}>
              Submit
            </Button>
          ]}
        >
          <Form
            name="basics"
            labelCol={{ span: 8 }}
            wrapperCol={{ span: 16 }}
            style={{ maxWidth: 600 }}
            initialValues={{ remember: true }}
            autoComplete="off"
            onFinish={handleSubmit}
          >
            <Form.Item
              label="Pin"
              name="pin"
              rules={[{ required: true, message: 'Please enter your Pin!' }]}
            >
              <Input />
            </Form.Item>
            <Form.Item wrapperCol={{ offset: 8, span: 16 }}>
            </Form.Item>
          </Form>
        </Modal>
      </Card>
    </div>
  );
};

export default SingleTransfer;

我已经检查了表单的规则设置、提交按钮的事件绑定,但还是没发现问题。有没有大佬能帮忙看看,为什么模态框里的表单无法提交呢?

备注:内容来源于stack exchange,提问作者etranz

火山引擎 最新活动