[解決済み] JavaScriptでリンクをクリックし、フォームを送信するには?
2022-03-05 09:07:30
質問
送信ボタンの代わりにリンクがあります。
<form>
<a href="#"> submit </a>
</form>
クリックされたときにフォームを送信するようにできますか?
解決方法は?
最適な方法
最適な方法は、適切なinputタグを挿入することです。
<input type="submit" value="submit" />
最適なJSの方法
<form id="form-id">
<button id="your-id">submit</button>
</form>
var form = document.getElementById("form-id");
document.getElementById("your-id").addEventListener("click", function () {
form.submit();
});
後者のJavaScriptコードは
DOMContentLoaded
イベント(
load
に対して
後方互換性
) をまだ実行していないのであれば、ぜひ実行してみてください。
window.addEventListener("DOMContentLoaded", function () {
var form = document.... // copy the last code block!
});
簡単でお勧めできない方法(前者の答え)
を追加します。
onclick
属性をリンクに追加し
id
をフォームに追加します。
<form id="form-id">
<a href="#" onclick="document.getElementById('form-id').submit();"> submit </a>
</form>
すべての方法
どのような方法であれ、あなたは電話をかけています。
formObject.submit()
いずれは(ここで
formObject
のDOMオブジェクトです。
<form>
タグ)を使用します。
また、このようなイベントハンドラをバインドする必要があり、そのハンドラは
formObject.submit()
そのため、ユーザーが特定のリンクまたはボタンをクリックしたときに呼び出されます。方法は2つあります。
-
おすすめです。 DOM オブジェクトにイベントリスナーをバインドする。
// 1. Acquire a reference to our <form>. // This can also be done by setting <form name="blub">: // var form = document.forms.blub; var form = document.getElementById("form-id"); // 2. Get a reference to our preferred element (link/button, see below) and // add an event listener for the "click" event. document.getElementById("your-id").addEventListener("click", function () { form.submit(); });
-
推奨しません。 インラインのJavaScriptを挿入します。この手法が推奨されない理由はいくつかあります。大きな理由のひとつは、マークアップ(HTML)とスクリプト(JS)を混在させることになるからです。コードが整理されなくなり、むしろメンテナンスができなくなります。
<a href="#" onclick="document.getElementById('form-id').submit();">submit</a> <button onclick="document.getElementById('form-id').submit();">submit</button>
さて、submit()の呼び出しをトリガーするUI要素を決めなければならない時点に来ました。
-
ボタン
<button>submit</button>
-
リンク
<a href="#">submit</a>
前述のテクニックを応用して、イベントリスナーを追加します。
関連
-
[解決済み】Javascriptのコールバック関数がFirefoxで「Callback is not a function」というエラーを投げる
-
[解決済み】Syntax error: JavaScriptの不正なreturnステートメント
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み] リンクのように動作するHTMLボタンを作成する方法
-
[解決済み] フォーム送信のようなJavaScriptのポストリクエスト
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Facebook Graph API のクエリで with=location を使用すると "Uncaught (in promise) undefined" というエラーが発生する。
-
[解決済み】パッシブイベントリスナー内部でpreventDefaultができない
-
[解決済み】JavaScriptのボタンonclickが機能しない
-
[解決済み] [Solved] Uncaught TypeError: nullのプロパティ 'appendChild' を読み取ることができない。
-
[解決済み】React、Uncaught ReferenceError。ReactDOMは定義されていません
-
[解決済み】エラー:リスン EACCES 0.0.0.0:80 OSx Node.js
-
[解決済み】Uncaught SyntaxError: JSON の位置 0 に予期しないトークン u があります。
-
[解決済み】Uncaught ReferenceError。Firebase は定義されていません。
-
[解決済み】JavaScriptで関数が存在するかどうかを確認する方法は?
-
[解決済み】DOMContentLoadedイベントとloadイベントの違いについて