🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

2916閲覧

formのonSubmitを別のハンドラから操作したい

yochun02

総合スコア76

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

1グッド

1クリップ

投稿2020/12/17 11:17

編集2020/12/17 11:22

フォームのonSubmit属性を訳あって別のボタンのイベントからも操作したいのですが可能でしょうか?

やりたいこと

typescript

1import * as React from "react"; 2import { render } from "react-dom"; 3import { useForm } from "react-hook-form"; 4 5import "./styles.css"; 6 7type FormData = { 8 firstName: string; 9 lastName: string; 10}; 11 12export default function App() { 13 const { register, handleSubmit, errors } = useForm<FormData>(); 14 const onSubmit = handleSubmit(({ firstName, lastName }) => { 15 console.log(firstName, lastName); 16 }); 17 18 return ( 19 <> 20 <form onSubmit={onSubmit}> 21 <label>First Name</label> 22 <input name="firstName" ref={register({reqired: true})} /> 23 <label>Last Name</label> 24 <input name="lastName" ref={register} /> 25 <input type="submit"/> // このボタンは当然onSubmitを待ち受ける 26 </form> 27 //<button onClick={このボタンをクリックしたらonSubmitが実行されたことと同義にしたい}> 28 // 送信 29 //</button> 30 </> 31 ); 32} 33 34const rootElement = document.getElementById("root"); 35render(<App />, rootElement); 36

理由としては、registerのバリデーションを別のボタンでも検出したいからなんですよね。(handleSubmitがonSubmitを経由してるのでonSubmitを外部から検知したい)

j.f15👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

HTML

1<buttun type="submit">

にすると送信ボタンが作れるようです(ニッチすぎる)。
HTMLFormElement: submit イベント - Web API | MDN

投稿2020/12/17 17:14

A_kirisaki

総合スコア2853

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yochun02

2020/12/18 04:17

buttonタグがformの外にある場合、formのidに紐づいている必要があるみたいですね。 ``` <form id={フォーム識別ID}> ... </form> <button type="submint" form={フォーム識別ID}> ``` とすることでフォームのイベントを受け付けることができました。
yochun02

2020/12/18 04:23 編集

また、別のハンドラで<button>を作動させるには ``` const onSubmit = ... anotherFunc = () => { const form = document.getElementById({フォーム識別ID}) form.addEventListener("submit", ()=>({})) } <form onSubmit={handleSubmit(onSubmit)}> ... ... ``` と書くことで、anotherFuncが呼ばれたときにonSubmitをhandleSubmit経由で実行(<button>が押されたことと同義)することができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問