@hanaten

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

name属性の重複

Q&A

Closed

解決したいこと

現在ウェブサイトのアクセシビリティ改善業務をしております。
コンサルからの指摘の中に「name属性が重複しています」という項目があるのですが、
inputに付与するようなname属性は重複してはいけないものなのでしょうか?
HTML Standardの公式ドキュメントなどをあたったのですが、
今ひとつはっきりと記述されていないような気がして。

index.html
<form>
    <input name="aaa">
</form>

<form>
    <input name="aaa">
</form>

もしご存じの方がいればご教授いただければ幸いです。

0 likes

3Answer

1つのフォームの中で、同じ値の name 属性を持つ input は複数存在しても構いません。

その場合、無効またはチェックされていない input を除いて、 name-value ペアがすべて送信されます1。たとえば以下のフォームを送信した場合、リクエストボディは employee=alice&employee=bob になります。

<form action="/" method="POST">
  <input type="text" name="employee" value="alice">
  <input type="text" name="employee" value="bob">
  <input type="submit">
</form>

上記の例では name を重複させる意味がありませんが、 JavaScript で動的に input を追加して複数項目を送信するような場合、同名の name をつけることがあります。

また、ラジオボタンの name は意図して重複させる使い方をします。同一フォーム内で name の値が等しいラジオボタンは1つしかチェックできない(つまりチェックした input の value だけが送信される)ことを利用し、ラジオボタンをグループ化するためです2

次に、異なるフォームの間で、同じ値の name 属性を持つ input は複数存在しても構いません。それらの input は特に関連しません。

  1. https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#constructing-form-data-set

  2. https://html.spec.whatwg.org/multipage/input.html#radio-button-state-(type=radio)

2Like

Comments

  1. 補足として、 id 属性は要素ツリーの中で値が重複してはいけないことが仕様に書いてありますが、 name 属性には書いてありません。

    When specified on HTML elements, the id attribute value must be unique amongst all the IDs in the element's tree and must contain at least one character.

  2. @hanaten

    Questioner

    ご回答ありがとうございます!

    詳細なご説明ありがとうございます。
    ご提示いただいた参照元、全て拝見しました。

    同じフォーム、異なるフォームに関わらず
    inputタグのname属性は重複可能な旨理解しました。

    また質問の際にはお力添えいただければ幸いですm( _ _ )m

上記のように、1つのformタグ内に重複することはあります。

HTML5においては文法上は単に重複不可とあったとおもいます。(但し、歴史的な理由...の下りが曖昧な表現で、記憶にない、探せない)
同一formは可と明言してなかったと思う。

尚、id、nameは文法上、NGですが、殆どの有名なブラウザでは許容してます。重複あり、ありです。歴史的な理由から

アクセシビリティ改善業務の定義において、name属性が重複が何を意味しているか?他の書法との比較して判断すればよいのでは?HTML5の文法を守るべきですが、既に動いているHTMLの重箱の隅をつっいても何も良いことは無いとおもいます。

歴史的な理由についてはCERNが開発したタイムマシーンでペーペーのコンサルを連れてMosaic開発者へ確認して下さい。

1Like

Comments

  1. HTML5においては文法上は単に重複不可とあったとおもいます。

    重複不可なのは a 要素の name 属性のことではないでしょうか。 HTML 4.01 まではページ内リンクの飛び先として <a name="xxx"> のように書くことができ、この値はページ内で重複してはいけなかったはずです。この name は HTML5 では非推奨になっています。

    input 要素の name 属性は重複してもいいはずです。(いいともだめとも仕様には書いてありませんが)

  2. 重複不可なのは a 要素の name 属性のことではないでしょうか。

    ご指摘、有り難うございます。曖昧な記憶がなんとなく,呼び起こされます

    先程、chatGTPにHTML5内を探してもらいました。私としてはスッキリです。

    1. FORMタグのname属性の重複禁止
    2. INPUTタグのname属性の重複許容、歴史的理由により

    chatGTPさんも原文の引用がなく歯切れのわるい回答です。

    formタグ自身のname属性は重複禁止です。コンサルさんはこれを誤解したのでしょうか?

  3. @hanaten

    Questioner

    皆様ご回答ありがとうございます!

    input要素のname属性は重複許可という方向で
    コンサルと話をしてみようと思います!

    aタグのname属性のお話も含め大変参考になりました。
    ありがとうございますm( _ _ )m

inputに付与するようなname属性は重複してはいけないものなのでしょうか?

逆に質問してなんですが、重複させなければならない理由があるのでしょうか? ラジオボタンではないですよね。理由が無ければ重複させないようにするということになると思うのですが。

コンサルからの指摘の中に「name属性が重複しています」という項目があるのですが、

もうひとつ、なぜコンサルに指摘された理由を聞かないのですか?

1Like

Comments

  1. @hanaten

    Questioner

    ご回答ありがとうございます!

    逆に質問してなんですが、重複させなければならない理由があるのでしょうか?

    説明が不足しておりすみません、当然の質問かと思います。
    ページは以下のように、検索システムへ値を渡すためhiddenの
    inputタグを持つボタンが複数設置されている状態です。

    index.html
    <form method="post" action="/search/result.php">
        <input type="hidden" name="color" value="red">
        <button type="submit">商品を検索</button>
    </form>
    
    <form method="post" action="/search/result.php">
        <input type="hidden" name="color" value="blue">
        <button type="submit">商品を検索</button>
    </form>
    

    もうひとつ、なぜコンサルに指摘された理由を聞かないのですか?

    ご指摘ありがとうございます。
    今回自社サイトの話ではなく、間にクライアントがいる状況です。
    クライアント経由での質問になるため、事前に皆様のお知恵を借りて
    質問内容の精度が上げられればというのが実のところです。

  2. 今回自社サイトの話ではなく、間にクライアントがいる状況です。クライアント経由での質問になるため、事前に皆様のお知恵を借りて質問内容の精度が上げられればというのが実のところです。

    クライアントがコンサルに「name属性が重複しています」と指摘を受け、それを右から左へ理由の説明なしであなたに投げてきたというわけですか?

    で、あなたがそれをここ(質問に書いてあること以外は詳しい事情は何も知らない第三者しかいない Q&A サイト)で投げてきたというわけですか?

    話を持っていく順序が違いますよ。そう思いませんか?

  3. @hanaten

    Questioner

    ご返信ありがとうございます!

    おっしゃりたいことはなんとなくですが理解できます。
    一方で自分の社会観に照らし合わせると、よくある話だとも思います。

    いずれにしても詳しい事情は何も知らない方々のご協力によって
    求める答えは得られたので本件はクローズさせていただこうと思います。

    ご協力いただきありがとうございましたm( _ _ )m

  4. おっしゃりたいことはなんとなくですが理解できます。

    なんとなくですか? 質問の仕方が良くないとは思ってないようですね。

    一方で自分の社会観に照らし合わせると、よくある話だとも思います。

    あなたの社会観は知りませんが、一般的に良くある話なんかではありません。

    まず、最初の質問に、今回の質問に至った事情、

    今回自社サイトの話ではなく、間にクライアントがいる状況です。クライアント経由での質問になる

    を書くべきです。

    その上で「クライアント/コンサルと話をする際の理論武装をするため name の重複はどういうケースで許されるか/許されないかを知りたい」という質問にしましょう。

    それが一般的な社会観に照らして適切な質問の仕方だと思いますよ。

Your answer might help someone💌