当按钮在 onBlur 事件中消失时,如何使表单提交工作?反应,下一个 js

How do I make a form submit work when button disappears on onBlur event? React, next js

我有一个在提交时执行事件的表单。

表单包含一个文本区域,当你点击它时,提交按钮出现,当你点击它时它消失(使用 onFocusonBlur 为此标记变量 'showSubmit'):

<form id="commentsForm" onSubmit={handleSubmitForm}>
      ...
         <textarea
             onFocus={onFocusShowSubmit}
             onBlur={onBlurHideSubmit}
             id="comment" name="comment" type="text" required></textarea>
          
         {showSubmit
             ?
             <button type="submit">Post Comment</button>
             : null}
</form>

onBlur 事件阻止按钮被点击并因此提交表单。

我读到过在按钮中使用 onMouseDown 事件,它确实有效,但它不捕获表单事件。我真的需要将 表单事件 传递给“handleSubmitForm”才能检索表单数据..

有谁知道我该如何解决这个问题? 谢谢!

我转载了这个,然后这样解决了:

import React, { useState } from "react";

function Q1() {
  const [showSubmit, setShowSubmit] = useState(false);
  const [text, setText] = useState();

  const onFocusShowSubmit = () => {
    setShowSubmit(true);
  };

  const handleSubmitForm = (e) => {
    alert("Form Sent");
  };
  return (
    <div>
      <form id="commentsForm" onSubmit={handleSubmitForm}>
        ...
        <textarea
          onFocus={onFocusShowSubmit}
          onBlur={
            text && text.length >= 1
              ? () => setShowSubmit(true)
              : () => setShowSubmit(false)
          }
          id="comment"
          name="comment"
          type="text"
          required
          onChange={(e) => setText(e.target.value)}
        >
          {text}
        </textarea>
        {showSubmit ? <button type="submit">Post Comment</button> : null}
      </form>
    </div>
  );
}

export default Q1;