20

私にはこれをやりたいという正当な理由がありますが、それは長い話なので、理由を説明しようとするのを忘れて、それが大丈夫かどうか尋ねるだけです。

同じ名前のフォームを複数持つ必要があるページがありますが、送信ボタンがクリックされたフォームのみを送信したいのです。たとえば、私のページには次のようなものがあります。

<form name="input" action="" method="get">
Username: <input type="text" name="user" />
<input type="submit" value="Submit" />
</form>

text

<form name="input" action="" method="get">
Username: <input type="text" name="user" />
<input type="submit" value="Submit" />
</form>

text

<form name="input" action="" method="get">
Username: <input type="text" name="user" />
<input type="submit" value="Submit" />
</form>

これは受け入れられますか?

4

4 に答える 4

21

HTML 4.01の仕様に関しては、一意性の要件がないためform、同じ属性を持つ要素を使用できます。nameただし、そうすると、そのような属性の目的が無効になります。これらは、クライアント側スクリプトでフォームを簡単に参照できるようにすることを目的としています。ある場合は<form name=foo>document.fooそのフォームを参照します。

name同じ属性が使用されたときに何が起こるかは未定義ですが、ブラウザが行うように見えるのは配列を返すことです。あなたの例では、最初の形式document.fooである3要素配列になります。document.foo[0]ただし、これは役に立ちません。(ドキュメントに他のフォームがないと仮定して)document.forms[0]明確に定義された意味でを使用できるからです。

name属性自体はform要素では古くなっています(ただし、必須であるフォームフィールドでは古くなっています)。のHTML4.01仕様句は次のようにform述べています。

「<code>name= cdata [CI]この属性は、スタイルシートまたはスクリプトから参照できるように要素に名前を付けます。ノート。この属性は、下位互換性のために含まれています。アプリケーションは、id属性を使用して要素を識別する必要があります。」</ p>

HTML5ドラフトでは、正式なルールでさえ同じname属性の使用を許可していません。の属性HTML5句nameformは、その値が「コレクションform内の要素(存在する場合)の中で一意である必要がある」と述べています。これは紛らわしい定式化ですが、ドキュメントの要素forms内で一意である必要があると想定するのが最も安全です。form

于 2012-06-20T03:57:43.110 に答える
10

はい、許可されていidます。一意である必要があるのは'sのみです。しかし、私はそれをお勧めしません、なぜあなた自身を将来混乱する立場に置くのか。

このname属性は、サーバーに送信されたときに各フォームフィールド要素がどのように表されるかを定義するだけです。

于 2012-06-20T01:28:42.860 に答える
1

HTML5でも問題ありません。フォーム自体の中で一意である必要があるのは名前だけです。

ドキュメントを参照してください:「値は空の文字列であってはならず、値は、存在するフォームコレクション内のフォーム要素間で一意である必要があります。」

于 2014-12-03T15:54:02.927 に答える
0

ユーザーが送信ボタンをクリックすると、そのフォームのみが実行されます。それでも、混乱しないように名前を付ける方がよいでしょう:)

于 2012-06-20T01:31:45.407 に答える