ウェブフォーム送信方法の詳細な概要

ウェブフォーム送信方法の詳細な概要

まず、フォームを送信するいくつかの方法を見てみましょう
1. <!--一般的な送信ボタン-->
<input type="submit" value="送信">
2. <!--カスタム送信ボタン-->
<button type="Submit">送信</button>
3. <!--画像ボタン-->
<input type="image" src = "btn.png">
説明: ユーザーがボタンまたは画像ボタンをクリックすると、フォームが送信されます。送信ボタンは、<input> または <button> のいずれかを使用して、その属性値を「submit」に設定することで定義できます。一方、イメージ ボタンは、<input> の type 属性値を「image」に設定することで定義されます。したがって、コードによって生成されたボタンをクリックするだけで、フォームを送信できます。
4. フォームの送信を防止する: 上記のいずれかのボタンがフォーム内に存在する限り、対応するフォーム コントロールにフォーカスがあるときに Enter キーを押すとフォームが送信できます。フォームに送信ボタンがない場合、Enter キーを押してもフォームは送信されません。
この方法でフォームを送信すると、ブラウザはサーバーにリクエストを送信する前に送信イベントを発生させます。これにより、フォーム データを検証し、フォームの送信を許可するかどうかを決定できるようになります。このイベントのデフォルトの動作を防止すると、フォームの送信がキャンセルされます。たとえば、次のコードはフォームの送信を防ぎます。

コードをコピー
コードは次のとおりです。

var イベントユーティリティ = {
addHandler: 関数 (要素、型、ハンドラー) {
要素を追加する場合
要素にイベントリスナーを追加します(タイプ、ハンドラー、false)。
} そうでない場合 (element.attachEvent) {
element.attachEvent("on" + タイプ、ハンドラー);
} それ以外 {
要素["on" + タイプ] = ハンドラー;
}
},
getEvent: 関数 (イベント) {
イベントを返します? イベント: window.event;
},
防止デフォルト: 関数 (イベント) {
イベントをデフォルトにしない場合は
イベントをデフォルトにしない();
} それ以外 {
イベントの戻り値は false です。
}
}
};
var フォーム = document.getElementById("myForm");
EventUtil.addHandler(フォーム、"送信"、関数() {
//イベントオブジェクトを取得する
イベント = EventUtil.getEvent(イベント);
//デフォルトイベントを防止
イベントをデフォルトにしない
});

preventDefault() メソッドを呼び出すと、フォームが送信されなくなります。通常、この手法は、フォーム データが無効でサーバーに送信できない場合に使用されます。
5. JavaScript では、submit() メソッドをプログラムで呼び出してフォームを送信することもできます。
この方法では、フォームに送信ボタンを含める必要はなく、フォームはいつでも正常に送信できます。例を見てみましょう:
var フォーム = document.getElementById("myForm");
//フォームを送信する
フォームを送信します。
submit() メソッドを呼び出してフォームを送信すると、送信イベントはトリガーされないので、このメソッドを呼び出す前にフォーム データを検証することを忘れないでください。
フォームを送信するときに発生する可能性のある最大の問題は、繰り返し送信することです。初めてフォームを送信した後、長い間応答がない場合、ユーザーはイライラする可能性があります。この時点で、ユーザーは「送信」ボタンを繰り返しクリックする可能性があります。その結果、多くの場合、トラブル(サーバーが重複したリクエストを処理する必要があるため)やエラー(注文が行われた場合、複数の追加コピーが注文される可能性がある)が発生します。
この問題を解決するには 2 つの方法があります
フォームが初めて送信された後は送信ボタンを無効にします。
後続のフォーム送信操作をキャンセルするには、onsubmit イベント ハンドラーを使用します。
次に、フォームを介して送信するいくつかの方法を詳しく紹介します。<br />方法 1: フォームの onsubmit() 関数を使用する (よく使用されます)。コードは次のとおりです。

コードをコピー
コードは次のとおりです。

<script type="text/javascript">
関数validateForm(){
if(document.reply.title.value == ""){ //フォーム名でフォームを取得する
alert("タイトルを入力してください!");
ドキュメントの返信タイトルにフォーカスを当てます。
false を返します。
}
if(document.forms[0].cont.value == ""){ //フォーム配列からフォームを取得する
alert("内容を入力してください!");
ドキュメントを返信します。
false を返します。
}
true を返します。
}
<form name="reply" method="post" onsubmit="return validateForm();">
<input type="text" name="title" size="80" />

<textarea name="cont" cols="80" rows="12"></textarea>

<input type="submit" value="送信" >
</フォーム>
知らせ:
1. onsubmit 属性には return キーワードが含まれている必要があります。含まれていない場合、関数は返されずに直接実行されます。
2.validateFormはブール値の戻り値を返す必要があります
3. 送信ボタンは送信タイプと表記する

方法 2: 入力タイプの送信コンポーネントの onclick() 関数を使用して、上記のフォーム タグ内の onsubmit="return validForm()" 属性を削除します。
次のように、「送信」ボタンに onclick イベントを追加します。
<input type="submit" value="送信" onclick="return validateForm();">
方法 3: ボタン コンポーネントの onclick() 関数を使用して手動で送信します。コードは次のとおりです。

コードをコピー
コードは次のとおりです。

<script type="text/javascript">
関数modifyItem() {
if (trim(document.getElementById("itemName").value) == "") {
alert("マテリアル名は空にできません!");
document.getElementById("itemName").focus();
戻る;
}
(document.getElementById("itemForm")) で {
メソッド = "投稿";
アクション = "item.do?command=modify&pa​​geNo=${itemForm.pageNo}";
提出する();
}
}
//戻る
関数 goBack() {
window.self.location = "item.do?command=list&pageNo=${itemForm.pageNo}";
}
</スクリプト>
<フォーム名="itemForm" id="itemForm">
<input name="itemNo" type="text" id="itemNo" value="${ item.itemNo }" >
<input name="itemName" type="text" id="itemName" value="${ item.itemName }" >
<input name="btnModify" type="button" id="btnModify" value="変更" onclick="modifyItem()">
</フォーム>
知らせ:
1. 送信時に、フォームの action 属性と methods 属性を設定し、form.submit() 関数を使用して送信します。

上記のコードの具体的な実装は次のように参照できます。
http://www.bjp111.com/zhshlist.aspx
http://www.bjp111.com/huixiaolist.aspx
http://www.bjp111.com/daililist.aspx
初心者向け概要:
フォーム内のコンポーネントを検証する場合、最初の 2 つはフォーム自体を含む name 属性を使用します。
フォームを送信しても応答がなく、フォーム送信コードに問題がないことが確実な場合は、フォームを送信する前に js コードを確認してください。以前の js コードのエラーによって、説明できない問題が発生する場合があります。

<<:  MySQLのスペースをクリーンアップするいくつかの具体的な方法

>>:  Vue でバイナリ ファイル ストリームを受信して​​ PDF プレビューを実現する方法

推薦する

docker を使って sonarqube を構築する方法

目次1. Dockerをインストールする2. ソナーイメージをインストールする3. ソナーを使ってコ...

ウェブ開発者やデザイナーにとって欠かせないオンラインウェブツールとアプリケーション

これまでの記事で、フロントエンド開発者にとって必須のツール、スクリプト、リソースのコレクションを紹介...

Dockerイメージの読み込み原理

目次Docker イメージ鏡とは何ですか? Dockerイメージの読み込み原理コミットミラーDock...

Gogs+Jenkins+Docker による .NetCore ステップの自動デプロイ

目次環境説明DockerのインストールゴグのインストールDocker で .NetCore サービス...

CSS でレスポンシブ レイアウトを実装する方法

CSS でレスポンシブ レイアウトを実装するレスポンシブレイアウトは非常にハイエンドで難しいように思...

上位Nを見つけるためのMySQLグループソートの詳細な説明

MySQLグループソートで上位Nを見つけるテーブル構造grp でグループ化し、num で並べ替えて、...

テキストまたはJSONを返すようにnginxを設定する方法

特定のインターフェースをリクエストするときに、指定されたテキスト文字列または JSON 文字列を返す...

nginxとIISで使用できるSSL証明書を作成する

目次SSL証明書の作成1. 秘密鍵を生成する2. 証明書要求ファイルを生成する3. CRT証明書ファ...

CSS でフロートをクリアするための完全ガイド (要約)

1. 親divは疑似クラスafterとzoomを定義します <スタイル タイプ="...

Linux でネットワーク パケット損失と遅延をシミュレートする方法

netem と tc: netem は、Linux カーネル バージョン 2.6 以降で提供されるネ...

Webフロントエンドツール、Sublime Text 2の紹介

Sublime Text 2 は、軽量でシンプル、効率的なクロスプラットフォーム エディターです。ブ...

HTMLウェブページの基本概念の簡単な分析

ウェブページとは何ですか? HTML ドキュメントがブラウザカーネルによってレンダリングされた後に表...

Windows 8 での MySQL Community Server 5.6 のインストールと設定のチュートリアル

この記事では、Windows 8 での MySQL5.6 のインストールと設定のチュートリアルを記録...

vsftpdで仮想ユーザーログインを設定する方法

yum で vsftpd をインストールします [root@localhost など]# yum -...

MySQL ビューの紹介と基本操作のチュートリアル

序文ビューは、データベース システム内で非常に便利なデータベース オブジェクトです。 MySQL 5...