HTML でのフォームとフォーム送信操作に関する情報のコレクション

HTML でのフォームとフォーム送信操作に関する情報のコレクション

ここでは、フォーム要素とフォーム送信に関する知識を紹介します。

フォーム要素

フォーム要素の DOM インターフェイスはHTMLElementから継承されたHTMLFormElementです。したがって、他の HTML 要素と同じデフォルトのプロパティを持ちますが、独自のプロパティとメソッドもいくつかあります。

プロパティ値例示する
受け入れる文字セットサーバーが処理できる文字セット。複数の文字セットはスペースで区切られます。
アクション要求された URL を受け入れます。この値は、フォーム要素内の input 要素または button 要素の formaction 属性によって上書きできます。
要素フォーム内のすべてのコントロールのコレクション (HTMLCollection)
暗号化タイプリクエストのエンコード タイプ。この値は、フォーム要素内の input 要素または button 要素の formenctype 属性によって上書きできます。
長さフォーム内のコントロールの数
方法送信する HTTP リクエストのタイプ。通常は「get」または「post」です。この値は、フォーム要素内の input 要素または button 要素の formmethod 属性によって上書きできます。
名前フォーム名
リセット()すべてのフォームフィールドをデフォルト値にリセットする
提出する()フォームを送信する
ターゲットリクエストを送信し、応答を受信するために使用されるウィンドウの名前。この値は、フォーム要素内の input 要素または button 要素の formtarget 属性によって上書きできます。
オートコンプリートフォーム要素を自動的に入力するかどうか

入力要素

input 要素は、広く使用されているフォーム要素です。type 属性の値に応じて、次のような一般的な用途があります。

テキスト入力 <input type="text" name="">
入力を送信 <input type="submit">
ラジオボタン入力 <input type="radio" name="同じ名前である必要があります" value="値は一致している必要があります">
チェックボックス入力 <input type="checkbox" name="同じ名前" value="異なる対応する値">
数値入力 <input type="number" min="" max=""> 入力ボックスには数字のみ入力でき、最大値と最小値を設定できます。
範囲入力 <input type="range" min="" max=""> は数値に似ていますが、入力ボックスの代わりにスライダーが表示されます。
色入力 <input type="color"> により、カラーピッカーがポップアップ表示されます。
日付入力 <input type="date"> により日付ピッカーがポップアップ表示されます。
電子メール入力 <input type="email"> がテキスト入力ボックスとして表示され、カスタム キーボードがポップアップ表示されます。
電話番号入力 <input type="tel"> は電子メール入力に似ています
URL 入力 <input type="url"> は電子メール入力に似ており、カスタム キーボードがポップアップ表示されます。
textarea 要素は複数行のテキスト領域を作成します。
<テキストエリア名="" id="" 列数="30" 行数="10"></テキストエリア>
cols と rows の属性値は、それぞれテキスト領域の幅と高さの文字を表します。
select 要素は、option 要素と組み合わせて使用​​され、ドロップダウン メニューを作成します。
<select name="" id=""> <option value=""></option> <option value=""></option> <option value=""></option> </select>

無線

グループ化するには?異なる名前属性を設定するだけです

例:

<input type="radio" name="favourite" value="ゲームをプレイ">ゲームをプレイ
<input type="radio" name="favourite" value="write code">コードを書く

<input type="radio" name="sex" value="man">男性
<input type="radio" name="sex" value="woman">女性、
これらは2台のラジオです

プレースホルダー

入力フィールドの予想される値を説明するヒントを提供します。
ヒントは入力フィールドが空のときに表示され、フィールドにフォーカスが当たると消えます。

タイプ=非表示

隠し入力を定義します。非表示フィールドはユーザーには表示されません。隠しフィールドには通常、デフォルト値が格納されますが、その値は JavaScript によって変更することもできます。
たとえば、セキュリティ上の理由から、ユーザーには見えない名前と値の値がバックグラウンドに送信され、バックグラウンドで検証が行われ、偽造ページが防止されます。

送信ボタン

フォームに送信ボタンを追加すると、ユーザーはフォームを送信できるようになります。

次の 3 つのボタンは、クリックするとフォームの送信イベントをトリガーできます。

<input type="submit" />
<button type="送信"></button>
<入力タイプ="画像" />

仕様上のボタン要素のタイプのデフォルト値は submit ですが、IE678 のデフォルト値は button であるため、互換性のために、button 要素に type="submit" 属性を手動で追加する必要があります。

イベントを送信

初心者は、フォームの送信は送信ボタンのクリックイベントによってトリガーされると考えるかもしれません。実際には、ボタン要素のクリックイベントとフォームの送信イベントは、ブラウザによって異なる順序で実行されます。したがって、フォームの送信イベントを正確に制御するには、フォームの送信イベントで検証などの操作を実行することを選択します。

form.addEventListener('submit', 関数(e) {
  (有効な())の場合{
    ...
  } 
  e.preventDefault()
})

フォーム要素に上記 3 つのボタンがいずれも存在しない場合、ユーザーはフォームを送信できません (Enter キーも無効)。このとき、フォーム要素固有のsubmit()メソッドを使用してフォームを送信できます。submit() メソッドを呼び出しても、フォーム要素の submit イベントはトリガーされないことに注意してください。submit submit()メソッドを呼び出す前に、フォームの検証やその他の操作を実行する必要があります。

(有効な())の場合{
  フォームを送信します。
}

フォームの送信とユーザーエクスペリエンス

一般的な ajax+cross-domain POST (CORS) テクノロジーに基づいて、フォーム要素を使用してデータを直接サーバーに送信できない場合があります。これは実行可能ですが、ほとんどの場合、エクスペリエンスが低下します。

JavaScript フォーム検証

JavaScript を使用すると、HTML フォームの入力データをサーバーに送信する前に検証できます。

JavaScript によって検証される一般的なフォーム データは次のとおりです。

ユーザーはフォームの必須フィールドに入力しましたか?
ユーザーが入力したメールアドレスは合法ですか?
ユーザーは有効な日付を入力しましたか?
ユーザーは数値フィールドにテキストを入力しましたか?
必須(またはオプション)項目

次の関数は、ユーザーがフォーム内の必須項目を入力したかどうかを確認するために使用されます。必須フィールドまたは必須フィールドが空の場合、警告ボックスがポップアップ表示され、関数の戻り値は false になります。それ以外の場合、関数の戻り値は true (データに問題がないことを意味します) になります。

関数validate_required(フィールド、アラートテキスト)
{
(フィールド)
{
if (値==null||値=="")
  {アラート(アラートtxt); falseを返す}
そうでない場合は{trueを返す}
}
}

以下に HTML フォームとコードを示します。

<html>
<ヘッド>
<script type="text/javascript">

関数validate_required(フィールド、アラートテキスト)
{
(フィールド)
  {
  if (値==null||値=="")
    {アラート(アラートtxt); falseを返す}
  そうでない場合は{trueを返す}
  }
}

関数validate_form(thisform)
{
(thisform) で
  {
  if (validate_required(email,"メールアドレスを入力する必要があります!")==false)
    {email.focus(); false を返す}
  }
}
</スクリプト>
</head>

<本文>
<form action="submitpage.htm" onsubmit="return validate_form(this)" method="post">
メールアドレス: <input type="text" name="email" size="30">
<input type="submit" value="送信"> 
</フォーム>
</本文>

</html>

メール認証

次の関数は、入力データが電子メール アドレスの基本構文に準拠しているかどうかを確認します。

つまり、入力データには @ 記号とピリオド (.) が含まれている必要があります。また、@ は電子メール アドレスの最初の文字には使用できず、@ の後には少なくとも 1 つのピリオドが必要です。

関数validate_email(フィールド、アラートテキスト)
{
(フィールド)
{
apos=値.indexOf("@")
dotpos=値.lastIndexOf(".")
(apos<1||dotpos-apos<2) の場合 
  {アラート(アラートtxt); falseを返す}
そうでない場合は{trueを返す}
}
}

完全なコードと HTML フォームは次のとおりです。

<html>
<ヘッド>
<script type="text/javascript">
関数validate_email(フィールド、アラートテキスト)
{
(フィールド)
{
apos=値.indexOf("@")
dotpos=値.lastIndexOf(".")
(apos<1||dotpos-apos<2) の場合 
  {アラート(アラートtxt); falseを返す}
そうでない場合は{trueを返す}
}
}

関数validate_form(thisform)
{
(thisform) で
{
if (validate_email(email,"有効なメールアドレスではありません!")==false)
  {email.focus(); false を返す}
}
}
</スクリプト>
</head>

<本文>
<form action="submitpage.htm" onsubmit="return validate_form(this);" method="post">
メールアドレス: <input type="text" name="email" size="30">
<input type="submit" value="送信"> 
</フォーム>
</本文>

</html>

ショートカットキーの送信

フォーム要素ラッパーがない場合、現在のページのフォーカスがフォーム要素にある場合でも、Enter キーを押してもフォームの送信はトリガーされません。ユーザーはキーボード制御からマウス/ジェスチャ制御に切り替える必要があり、元のスムーズさが損なわれます。最も簡単な解決策は、外側のレイヤーでフォーム要素を使用してラップし、フォーム要素に少なくとも 1 つの送信ボタンがあることを確認することです。このとき、フォームの入力フィールドにフォーカスが当たった状態で、ユーザーは Enter キーを押して送信をトリガーします。

ブラウザはアカウントのパスワードを記憶します

フォームを送信すると、モバイル ブラウザを含む高度なブラウザは、ユーザーにユーザー アカウントとパスワードを記憶する必要があるかどうかを尋ねます。一般ユーザーにとって、これは特にモバイル デバイスで非常に便利な機能であり、ユーザーの時間を大幅に節約できます。フォーム要素がない場合、ブラウザはクエリ ウィンドウをポップアップ表示しません。

要約する

フォーム アプリケーションを開発する場合、フォーム要素を削除して直接送信しないでください。フォーム要素には送信ボタンを含める必要があります。ボタン要素の場合は、type="submit" 属性を手動で追加する必要があります。送信イベントは、送信ボタンのクリック イベントではなく、フォーム要素の送信イベントで処理されます。

参照:

フォーム要素とフォーム送信

<<:  インタラクションデザインと心理学の驚くべきつながり18選

>>:  NodeはMySQLに接続し、追加、削除、変更、チェックのための実装コードをカプセル化します。

推薦する

UnityはMySQLに接続し、テーブルデータの実装コードを読み取ります

表は以下のとおりです。 Unity が読み取って呼び出すときのコード: データベース内の別のテーブル...

VMware仮想マシンにLinux(CentOS)をインストールするための詳細な構成手順

CentOS7をダウンロード私がダウンロードしたイメージはCentOS-7-x86_64-DVD-1...

Windows Server 2008R2、2012、2016、2019 の違い

目次共通バージョンの紹介共通バージョンのダウンロードアドレスとインストール以下に簡単な違いを示します...

Nginx の Docker インストールの問題とエラー分析

質問: DockerにNginxをインストールするときに次のエラーが発生しました: docker: ...

Ubuntu で XFS ファイルシステム用の LVM を作成する方法

序文lvm (論理ボリューム マネージャー) 論理ボリューム管理は、Linux システムのニーズを満...

Ckeditor + Ckfinderを使用したJavaScriptファイルアップロードケースの詳細な説明

目次1. 準備2. 減圧3. 統合を開始する1. 準備Ckeditor_4.5.7_full + C...

ノードでシェルスクリプトを使用する方法

背景開発中、特定の状況でビジネス ロジックをバッチ処理するためのスクリプトが必要になる場合があります...

Tomcat プロセスの CPU 使用率が高い場合のトラブルシューティング記録を記録する

この記事では主にTomcatプロセスを記録し、TCP接続が多すぎることによるCPU使用率の過剰のトラ...

MySQL 8.0.23 無料インストールバージョンの設定詳細チュートリアル

最初のステップは、MySQL 8.0.23の無料インストールバージョンをダウンロードすることです。 ...

フロントエンドブラウザのフォントサイズが12px未満のソリューション

序文最近プロジェクトに取り組んでいたとき、UI デザインのフォント サイズは 10 ピクセルでした。...

W3C が推奨するモバイル Web マークアップ言語 XHTML Basic 1.1

W3C は最近、「 XHTML Basic1.1 」と「 Mobile Web Best Prac...

マークアップ言語 - リスト

標準化されたデザインソリューション - マークアップ言語とスタイルマニュアルWeb 標準ソリューショ...

WeChatミニプログラムでの仮想リストの実装例

目次序文分析する初期レンダリング方法初期最適化さらなる最適化方法2序文ほとんどのミニプログラムには、...

ウェブページを作るときに注意すべき5つのポイント

1. 色合わせの問題<br />Web ページには 3 色以上使用しないでください。そう...

HTML Webページ作成チュートリアル iframeタグを慎重に使用してください

iframe を使用すると、他の Web サイトのページを簡単に呼び出すことができますが、注意して使...