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に接続し、追加、削除、変更、チェックのための実装コードをカプセル化します。

推薦する

Vue3 の動的コンポーネントはどのように機能しますか?

目次1. コンポーネントの登録1.1 グローバル登録1.2 グローバルコンポーネントの登録プロセス1...

nginxのデフォルトポートを変更する方法の詳細な説明

まず設定ファイルがどこにあるか調べる nginx.confはどこにありますかこれらのディレクトリを調...

一定期間の日ごと、時間ごとの統計データを取得するMySQLの詳しい説明

毎日の統計情報を取得するプロジェクトを実行する際、プロジェクト ログを分析する必要があります。要件の...

CSS3 のエラスティック レイアウトでの em の使用の概要: 1em は何ピクセルですか?

私は長い間 CSS を使用してきましたが、Web 要素の関連属性を設定するために常に「px」を使用し...

Tomcat で server.xml と content.xml を変更した後の自動復元の問題の解決方法

設定ファイルを server.xml と content.xml に書き込みます。サーバーを再起動す...

CSS 極座標のサンプルコード

序文このプロジェクトには、衛星測位用のグラフィックスを含むチャートの要件があり、北半球または南半球の...

Linux でのマルチスレッドプログラミング例の分析

1 はじめにスレッド技術は 1960 年代にすでに提案されていましたが、マルチスレッドがオペレーティ...

前後の秒、分、時間、日数を取得するMySQLデータベース

現在の時刻を取得します: current_timestamp を選択します。出力: 2016-06-...

Vue モバイル プロジェクトでページ キャッシュを実装する方法のサンプル コード

背景モバイル デバイスでは、ページ ジャンプ間のキャッシュが必須要件です。例: ホームページ =&g...

さまざまな環境での Docker Compose のインストール方法

1. オンラインインストール現在、Linux x86アーキテクチャのオンラインインストールのみを試し...

MySQLデータのエクスポートとインポートに関する知識ポイントの簡単な分析

多くの場合、ローカル データベースのデータをエクスポートしたり、他のデータベースからデータをインポー...

Nginx は https ウェブサイト構成コード例を実装します

https ベースポート 443。これはキーと呼ばれるものに使用されます。これらのことを理解せずにで...

XHTMLコードの一般的なアプリケーション問題をまとめる

時間が経つにつれて、多くの人が XHTML の使い方を知らないことに気づきました。普通の初心者だけで...

JS 非同期実行の原則とコールバックの詳細

1. JSの非同期実行の原則JavaScript はシングルスレッドですが、ブラウザはマルチスレッド...

Dockerの動作モードと原理の詳細な説明

次の図に示すように: 仮想マシンと Docker を使用するとき、「なぜ Docker は VM よ...