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

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

まず、フォームを送信するいくつかの方法を見てみましょう
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 プレビューを実現する方法

推薦する

Vueは小さなメモ帳機能を実装しました

この記事の例では、メモ帳の小さな機能を実現するためのvueの具体的なコードを参考までに共有しています...

MySQLは文字列の連結、インターセプション、置換、位置検索操作を実装しています

MySQL 文字列の連結、インターセプト、置換、および検索位置。よく使用される文字列関数:関数例示す...

Vue.jsは画像切り替え機能を実装する

この記事では、画像切り替え機能を実装するためのVue.jsの具体的なコードを参考までに共有します。具...

Mysqlはマスタースレーブ構成とマルチマスターマルチスレーブ構成を実装します

現在シミュレーションしているのは、マスター スレーブ システム (ホスト 1 台とスレーブ 1 台)...

Centos7 システムでの MySQL マスター スレーブ同期構成スキーム

序文最近、高可用性プロジェクトに取り組む際には、データの同期が必要になっています。ノードが 2 つし...

Linux システムでの nginx サーバーのインストールと負荷分散構成の詳細な説明

nginx (エンジン x) は、高性能な HTTP およびリバース プロキシ サーバー、メール プ...

ElementUIテーブルのヘッダーアイコンにフローティングプロンプトを追加します。

この記事では主に、ElementUI テーブルのヘッダー アイコンにフローティング プロンプトを追加...

JavaScript の組み込み Date オブジェクトの詳細な説明

目次日付オブジェクト日付オブジェクトの作成新しい日付()日付を取得する()取得日()月を取得する()...

Linux システムでのユーザー管理の概要

目次1. ユーザーとユーザーグループの重要性1) ユーザーの存在意義2) ユーザーグループの重要性2...

Windows での MySQL 5.7.18 インストール チュートリアル

この記事では、圧縮パッケージから MySQL をインストールする方法について説明します。 1. My...

bodyタグの主な属性の概要

bgcolor="テキストの色" background="背景画像&q...

HTMLでのラジオ値の取得、割り当て、登録の詳細な説明

1. ラジオのグループ化名前が同じであれば、それらはグループであり、つまり、次のようにグループ内で選...

MySQL トランザクションと分離レベルの基本原理の簡単な分析

目次序文1. 取引の基本原則の簡単な分析原子性:持続性分離:一貫性: 2. 分離レベルの基本原理の分...

MySQLでカーソルトリガーを使用する方法

カーソル選択クエリによって返される行のセットは、結果セットと呼ばれます。結果セット内の行は、入力した...