• ベストアンサー

こんな<form>って、基本的にありえないでしょうか?

<form>の設置に付いて質問です。 この様な設置というものは基本的にありえないのでしょうか??ソースはショッピングカートのASPに渡すものなのですが・・・。例として、サッカーの映像をDVDとヴデオから選択するという感じです。 <td> <form action="https://www.○○○.com/cartcgi"> サッカー映像<br> <select name="option1"><option value="DVD">DVD<option value="VIDEO">VIDEO</select> </td> <td>1,000円</td> <td> <input type=hidden name="number" value="0001"> <input type="hidden" name="user" value="abc"> <input type=submit value="カートに入れる"> </form> </td> 様は、複数またがった<td>に対して、飛んで</form>が来ているという物です。 これをどうにか無理やり設定した場合、何とか見た目も動作もするのですが、ホームページソフトで(有名どころ全て)で、ぐちゃぐちゃになってしまい、閲覧が困難な状態になってしまいます。 DW何かでは、テーブル部分が一箇所飛び出てしまいます。 そこで、根本的に定義に問題があるのだと思い調べるのですが、このようなことを書いてあるところが発見できません・・・。 やはり<form>は1箇所の<td>内で記述するのが本来の使い方なのでしょうか?? 変な質問ですが、お詳しい方いらっしゃいましたら、アドバイス宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kalze
  • ベストアンサー率47% (522/1092)
回答No.1

ありえないか?といわれればありえませんね。 やるのであれば、 <form> <table> <tr> <td><select><option></option><option></option></td> <td>1000円</td> <td><input type="submit"></td> </tr> </table> </form> (属性はめんどくさいので省略ました) つまり、<table>と</table>の中に<td></td>で囲まれていれば別ですが、<form>は入れないということです。

404not_found
質問者

お礼

kalzeさん有難う御座います。 大変勉強になりました!! すみません、もう1つ問題があるのですが・・・、というか書くのを忘れていました・・・。 この同様の記述が複数ある場合はどうすればよいのでしょうか?? 同じテーブル内に、先ほどと商品は違えど同じフォームが10個くらいある場合は、全体で囲んでしまうと混乱がおきそうな気がするのですが・・・。 やはりこういった場合は1つの<td>ないに1つずつ記述するほかすべは無いのでしょうか・・・? 何度もすみませんが、宜しくお願いいたします!!!

その他の回答 (3)

  • kalze
  • ベストアンサー率47% (522/1092)
回答No.4

複数ある場合どうするか、ですか。 #3様がかかれているように、入れ子にするとか。 もしくはtableは使わないで表っぽく表示されるようにCSS使うとか。 他には、submitのボタンで識別するとか。 1ページに羅列しないとか。 (構成自体変わりますけど) チェックボックスやラジオボタンで商品を選択させて、submitはひとつにするとか。 まぁこればっかりはサイト全体にも関わってくるので、仕様がわからないとなんともいえないですね。

回答No.3

とりあえず・・・。 要素は1つのまとまりです。 開始タグだけで終了タグがもとから無いもの,開始タグ終了タグ共にあるが終了タグは省略可能なもの,開始タグ終了タグ共にあり共に省略不可のものといろいろあります。 TD の下で FORM を記述するとしたら、それは TD 要素の配下に FORM 要素を置くという事です。TD の終了タグが現れたらそこで FORM も終り。しかも FORM は終了タグの省略は不可なので記述ミスありとなります。 ここで問題は、それを解釈したツールがどう対応するか。誤りを補正する動きが偶然に作成者の望む形だと見落としの可能性も・・・。 次に別の TD 要素下で FORM の終了タグが現れると・・・。ここで TD は終了タグは省略可能という事で FORM の終了タグの前に TD は終了タグが省略されているという解釈がされる可能性が・・・。という事でテーブルが崩れます・・・・・。 という事で改めて、各要素は1つづつのまとまりであると。 では FORM の各部品(inputなど)を複数要素に分けたい(別々の TD 配下としたい)場合はどうするか。 それらを含む要素とすれば良い。という事で TABLE の外に FORM の開始タグと終了タグを記述。 尚、1つの TABLE で複数の FORM が存在し類似の場合は・・・。TABLE を分割,入れ子にしてごまかすとか・・・。

  • Werner
  • ベストアンサー率53% (395/735)
回答No.2

おかしいのはタグが入れ子になっていないところです。 HTMLでは  <element1><element2></element2></element1> のように入れ子にすることはできますが、  <element1><element2></element1></element2> のように互い違いにすることはできません。 ブラウザは互い違いでも何とか(強引に)解釈しようとしますから たぶんそれで変な表示になったのでしょう。 入れ子にしようとするとformの開始と終了はtdの外側になりますが trの中にはth,td以外を置くことはできませんから、 #1さんの言うとおりtable全体をformで囲むのがよいでしょうね。

404not_found
質問者

お礼

有難う御座います。 やはり同じような記述が複数ある場合は別の方法をとったほうが良いのでしょうか??? 商品が複数あるので困っています・・・。 よろしくお願いします。