ここでは、フォーム要素とフォーム送信に関する知識を紹介します。 フォーム要素 フォーム要素の DOM インターフェイスは
入力要素 input 要素は、広く使用されているフォーム要素です。type 属性の値に応じて、次のような一般的な用途があります。 テキスト入力 <input type="text" name=""> 無線 グループ化するには?異なる名前属性を設定するだけです 例: <input type="radio" name="favourite" value="ゲームをプレイ">ゲームをプレイ <input type="radio" name="sex" value="man">男性 プレースホルダー 入力フィールドの予想される値を説明するヒントを提供します。 タイプ=非表示 隠し入力を定義します。非表示フィールドはユーザーには表示されません。隠しフィールドには通常、デフォルト値が格納されますが、その値は JavaScript によって変更することもできます。 送信ボタン フォームに送信ボタンを追加すると、ユーザーはフォームを送信できるようになります。 次の 3 つのボタンは、クリックするとフォームの送信イベントをトリガーできます。 <input type="submit" /> <button type="送信"></button> <入力タイプ="画像" /> 仕様上のボタン要素のタイプのデフォルト値は submit ですが、IE678 のデフォルト値は button であるため、互換性のために、button 要素に type="submit" 属性を手動で追加する必要があります。 イベントを送信 初心者は、フォームの送信は送信ボタンのクリックイベントによってトリガーされると考えるかもしれません。実際には、ボタン要素のクリックイベントとフォームの送信イベントは、ブラウザによって異なる順序で実行されます。したがって、フォームの送信イベントを正確に制御するには、フォームの送信イベントで検証などの操作を実行することを選択します。 form.addEventListener('submit', 関数(e) { (有効な())の場合{ ... } e.preventDefault() }) フォーム要素に上記 3 つのボタンがいずれも存在しない場合、ユーザーはフォームを送信できません (Enter キーも無効)。このとき、フォーム要素固有の (有効な())の場合{ フォームを送信します。 } フォームの送信とユーザーエクスペリエンス 一般的な 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に接続し、追加、削除、変更、チェックのための実装コードをカプセル化します。
CSS は Web ページの印刷スタイルを制御します。 CSS を使用して印刷スタイルを制御します。...
序文誰もが日常業務で SQL の最適化を経験したことがあると思います。したがって、最適化の前に、遅い...
序文このコントロールを直接印刷すると下部に透かしが入りますが、公式 Web サイトから購入することで...
1. readonly 読み取り専用属性なので、値を取得できます2. 無効: 無効な属性、値を取得で...
目次1. 基本2. 問題の説明3. 解決策付録: js を使用して Excel の日付形式を変換する...
この記事の例では、タイプライター効果を実現するためのjsの具体的なコードを参考までに共有しています。...
OP が現在のファームウェアで Web ページを開くと、常に 50% にズームアウトされてから表示さ...
導入定期的にヘルスチェックを送信して、アップストリーム グループ内の HTTP サーバーのヘルスを監...
MySQL 5.7 のインストール私たちは学校で MySQL データベースを学んでいます。先生は私た...
docker-compose.yml に extra_hosts キーワードを追加すると、コンテナの...
注意: docker-compose.yml ファイルを書き込むときは、すべてのコロン (:) とダ...
Ubuntu は、Linux をベースにした無料のオープンソース デスクトップ PC オペレーティン...
リンクに rel="nofollow" 属性を追加すると、検索エンジンにこの接続...
何人かのブロガーが私の記事を評価してくれたのは嬉しいです。マークと知り合ってからは、私は彼をフォロー...
コードをコピーコードは次のとおりです。 <span style="font-fami...