11
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

formタグ,aタグ,inputタグの組み合わせでリンクが動作しない(IEのみ)

Last updated at Posted at 2015-06-24

#何をしたかったか
単純にボタンにaタグでリンクを張って、外部に飛ばしたい。
ただしレイアウト諸々の関係上、formタグの中にボタンを置いた。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
        <title>テスト</title>
</head>
<body>
<form action="/hoge" method="POST">
<div>
        <a href="http://www.yahoo.co.jp"><input type="button" name="button" value="外部サイトへ"></a>
        <input type="submit" name="submit" value="送信" >
</div>
</form>
</body>
</html>

#何にハマったか
Chrome、FireFoxでは"外部サイト"へボタンを押せば、きちんとリンク先に飛ぶのだが、IE11は無反応だった。

HTML5にしたらどうだろうと思い、DOCTYPEを<!DOCTYPE html>に書き換えてみたが変わらず。
そもそもHTML5ではaタグの子要素としてinputタグは許可されていないので、HTML Validateでエラーとなる。
(Chrome、FireFoxでは動くけど)

次にaタグ、inputタグの組み合わせをformの外に出してみた。
これだと3ブラウザいずれも問題なく動作した。

<form action="/hoge" method="POST">
<div>
        <input type="submit" name="submit" value="送信" >
</div>
</form>
<a href="http://www.yahoo.co.jp"><input type="button" name="button" value="外部サイトへ"></a>

#結局どうしたか
HTML5のエラーも考慮して、onclickイベントで対応。

<form action="/hoge" method="POST">
<div>
        <input type="button" name="button" value="外部サイトへ" onclick="window.open('http://www.yahoo.co.jp', '_self')"></a>
        <input type="submit" name="submit" value="送信" >
</div>

#補足(2016.11.18)
今更ながら最初のHTMLをWindows10のIE11(バージョン:11.672.10586.0)とMicrosoftEdgeで確かめてみた。
結果はどちらも問題なく動作。バグfixされたのかな。

11
12
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?