Home > HTML&XHTML > [XHTML]buttonタグの挙動について

[XHTML]buttonタグの挙動について

フォーム送信などするときに使うボタンはinputとbuttonがあります。
ボタン要素にもnameとvalueをつければ、ほかのフォームエレメントと同じように値を送信することが出来ます。

buttonタグだと、ボタン要素そのものにつける値とボタンに表示するラベルを違うものに出来るので、
送信ボタンとか作るときには便利なんですが、IEだけ挙動が違うので注意が必要です。

HTML:
  1. <input type="submit"  name="test" value="send" />
  2.  
  3. <button type="submit" name="test" value="send">submit</button>

前のソースで送信すると、どちらの場合もPHPの場合$_POST["test"]で値は"send"になるはずが、
IEだとbutton要素につけたvalueは無視されて、値がラベルになります。
つまり上のソースだと$_POST["test"]で値が"submit"になってしまう。

さらに、inputとbuttonを併用してるときにinputのボタンを押すとbutton要素の値まで送信される様子。

挙動確認のサンプルソース。
IEとその他のブラウザで押してみると結果が違うのが分かるハズ。

Sample1:inputとbutton

PHP:
  1. <?php
  2.     if(isset($_POST)){
  3.         foreach($_POST as $key => $value ){
  4.             print $key."=>".$value."<br />";
  5.         }
  6.     }
  7. ?>
  8. <form action="" method="post">
  9. <input type="submit"  name="input" value="send" />
  10. <button type="submit" name="input2" value="send">submit</button>
  11. </form>

inputを押すとinput=>send
buttonを押すとinput2=>sendになる

FireFox、Opera、Safariなどは思い通りの結果。

HTML:
  1. //inputを押す
  2. input=>send
  3.  
  4. //buttonを押す
  5. input2=>send

IE6だと、押してないbutton要素まで送信される上に、buttonのname="value"の関係が変わる。

HTML:
  1. //inputを押す
  2. input=>send
  3. input2=>submit
  4.  
  5. //buttonを押す
  6. input2=>submit
  7. //本来値はsendであるべき

IE7は、押してないbutton要素は送信されないが、buttonの値が変わるのはそのまま。
確認はスタンドアロンのベータ版。

HTML:
  1. //inputを押す
  2. input=>send
  3.  
  4. //buttonを押す
  5. input2=>submit
  6. //本来値はsendであるべき

Sample2と3:テキストエリアでのEnter

さらに、テキストボックスとかに添えた時に

HTML:
  1. <form action="" method="post">
  2. <input name="text" type="text" size="20">
  3. <input type="submit"  name="input3" value="save" />
  4. <button type="submit" name="input4" value="delete">削除</button>
  5. </form>

Enterを押すと、Firefoxはinputが送信されるが、IEはbuttonが送信される。
こういう場合、先頭にあるものが優先されるので並び順を変えた場合FireFoxはbuttonを送信するようになるが、
IEだと順序に関わらずinput要素がスルーされてbuttonが送信される。(Sample2)
上のソースだと、どんなにがんばってもsaveが取得出来ないという結果に・・・

ただし、テキストエリアを2つ以上並べると、IEもFireFoxとほぼ同じ挙動になる。(Sample3)

ボタンの値で動作を分岐させるようなプログラムなら、おとなしくinput使った方が無難。

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://tenderfeel.xsrv.jp/html-xhtml/223/trackback/
Listed below are links to weblogs that reference
[XHTML]buttonタグの挙動について from WebTecNote

Home > HTML&XHTML > [XHTML]buttonタグの挙動について

最近の投稿
最近の修正
  • そしてこのSQLはわれながらよく書いたと思う 2010-11-15
  • CSVの列っていう方がいいのかな…118項目だった 2010-11-15
  • 楽天のCSVの項目が116個もあった衝撃 2010-11-15
  • オフィスで香水臭振りまくのは迷惑だと知れ 2010-11-15
  • ぐあー フレグランステロやー 2010-11-15
  • More updates...

Powered by Twitter Tools

Tag Cloud
おすすめサーバー・他
メタ情報

Return to page top