HTML

<input type=submit>は止めて<button type=submit>を使うべき

More than 1 year has passed since last update.

表題の通り

問題

多くのHTML Formでは送信ボタンのサンプルとして以下のようなコードを例示してします。

<form>
  <input type='submit' value='送信'>
</form>

もしボタンによって処理を分岐させたいのであれば、このようなコードを書きます。

<form>
  <input type='submit' name='action' value='送信'>
  <input type='submit' name='action' value='下書き保存'>
</form>
if ($_POST['action'] == '送信') {
  // 送信処理
} else if ($_POST['action'] == '下書き保存') {
  // 保存処理
}

しかしこの方法では、ソースコードに日本語の文字列が加わって少々気持ち悪いです。

また、さらには

  • 複数言語対応した時に分岐が面倒になる。
  • (最近は問題ないが)日本語の文字コードの問題が発生する。

などの問題が出てくるかもしれません。

解決

以下のようなコードを書くべきではないでしょうか。

<form>
  <button type='submit' name='action' value='send'>送信</button>
  <button type='submit' name='action' value='save'>下書き保存</button>
</form>

これならサーバーサイドでは$_POST['action'] == 'save'という比較で済むので安心です。

そもそも<button>を使うほうが汎用性が高いので、最初から全ての送信ボタンは<button>を使うべきだと思います。
どうでしょう。