3

むかしむかし HTML で


私はW3Foolsを探していて、W3Schoolsのエラーに関連するこの段落を見つけました:

  <form>  
    First name: <input type="text" name="firstname" /><br />  
    Last name: <input type="text" name="lastname" />  
   </form>

このコードは間違っています。非ブロックレベル要素 ( など) は、HTML5 までタグ<input>内で直接有効ではありません。<form>

ええと、私はいつもそのようにフォーマットしているので、「待って、ずっと間違っていた」と自分に言い聞かせました。そして、それが本当かどうかを確認するために検証に行きます。事実上、このコードは検証に合格しません。

次に、正しいマークアップを検索したところ、より信頼できる情報源からいくつかの例を見つけましたが、次の例のいずれもバリデーターを通過しませんでした。



悪いこと、良いこと、醜いこと


1.W3スクールズ

<form>
First name: <input type="text" name="firstname"><br>
Last name: <input type="text" name="lastname">
</form>

2. Mozilla ネットワーク開発者

「例」セクションで、私はこれを見つけました:

一般的なユースケースのシナリオ

<!-- A common form that includes input tags -->
<form action="getform.php" method="get">
    First name: <input type="text" name="first_name" /><br />
     Last name: <input type="text" name="last_name" /><br />
        E-mail: <input type="email" name="user_email" /><br />
<input type="submit" value="Submit" />
</form>

3. W3C ウィキ

<form action="http://www.google.com/search" method="get">
  <label>Google: <input type="search" name="q"></label>
  <input type="submit" value="Search...">
</form>



一握りのコード


詳細:

HTML 4.01 と XHTML 1.0 の両方で、コードを HTML フラグメントとして検証しようとしています。私が見つけた繰り返しのエラーは次のとおりです。

ドキュメント タイプは、ここで要素「入力」を許可しません。"p"、"h1"、"h2"、"h3"、"h4"、"h5"、"h6"、"div"、"pre"、"address"、"fieldset"、"ins" のいずれかが欠落しています。 、「del」開始タグ

質問

フォームを作成するために使用する必要がある、正しく有効なマークアップは何ですか?

前もって感謝します。


編集:

OPをHTML4仕様のフォームセクションにリダイレクトする同様の質問が回答されました。彼らはこのコードを提供しました:

<FORM action="http://somesite.com/prog/adduser" method="post">
   <P>
     <!--...stuff...-->
     <INPUT type="submit" value="Send"> <INPUT type="reset">
   </P>
</FORM>

まず、それは彼らのwikiの同じコードではありません。しかし、私が知っていることから、wikiは100%正確ではありません....しかし:

  • すべてのタグを で囲むことにより、検証エラーを修正します<p>。しかし、フォームは段落ではありませんよね? このコードは検証に合格していますが、あまりセマンティックではないと思います...

  • あなたが私にくれた専門家の回答 (ありがとう!) は、ほとんどの場合、内側のタグを で囲むこと<fieldset>ですが、1 つだけ必要な場合fieldset(たとえば、フィールドが 1 つしかないフォームまたは自己関連フィールド)、これは正しい?これは不要なコードではないfieldsetでしょうか (タグは同様のフィールドを囲む必要があるため)。

4

4 に答える 4

3

フィールドセットは、フォームで一般的に使用されるブロック レベルの要素です。したがって、フィールドセットまたは div のような別のブロック レベル要素を使用できます。

<form action="http://www.google.com/search" method="get">
<fieldset><legend>My form</legend>
<label>Google: <input type="text" name="q"></label>
<input type="submit" value="Search...">
</fieldset>
</form>

また

<form action="http://www.google.com/search" method="get">
<div>
<label>Google: <input type="text" name="q"></label>
<input type="submit" value="Search...">
</div>
</form>

フォームのスタイルを適切に設定するために多くの div を使用する傾向があるため、これが無効なマークアップとしてフラグ付けされることはおそらくほとんどありません。

于 2013-04-30T10:17:35.853 に答える
2

FieldSet がフォーム項目をグループ化する最良の方法であるという点で、他のいくつかの意見に同意する傾向があります。特に、スクリーン リーダーなどで非常に役立つためです。

私は以下を使用する傾向があります:

<form action="http://www.google.com/search" method="get">
    <fieldset>
        <legend style="display: none;"></legend>
        <label for="q">Google:</label>
        <input type="text" name="q">
        <input type="submit" value="Search...">
    </fieldset>
</form>

通常、凡例は含めませんが、検証に必要な場合は、必ずしも表示する必要はありません;)

于 2013-04-30T10:44:34.590 に答える
0

<fieldset>タグ内でフィールドとラベルをグループ化する傾向がありますが、これも非常に意味論的に聞こえます。

于 2013-04-30T10:16:26.003 に答える