submitのvalueが送信されない

ボタンを二つ設置して、押されたボタンで処理を振り分けるようにしたかったのですが、なぜかsubmitのvalueだけ送信されない事態に遭遇。

今まで使ってたform用のクラスを流用しているし、原因がわからない。プログラムが出力するフォームのソースをコピペして単純にPOSTされた値を表示するだけのフォームを作成してテストするときちんとsubmitのvalueもPOSTされている…。フレームワークのせいなのか…。でもどのファイルからもPOSTの変数を削るような処理はしていないし、ましてなぜsubmitだけなのか。かなり時間を費やし、やっと原因が判明。外部読み出しのファイルに記述した下記のJavasciptでした。

$('form input[type=submit]').click( function () {
    $(this).attr( 'disabled', 'disabled' );
});

重い処理が発生するフォームがあったので、二重送信しないようにコードをいれていたのを忘れていました。
submitは押したもののデータだけが送信されますが、jQueryでclickしたときにdisabled属性をつけた場合でも送信されないんですね…。押した後にdisableになるだろうから問題ないとスルーしていましたが違うようです。

  • ブックマーク
  • Feedly

この記事を書いた人

キタジマタカシ

長崎在住、フリーランスのWordPress テーマ / プラグインデベロッパー。 多数のプロダクトをオープンソースで開発・公開しています。現在は WordPress 有料テーマ Snow Monkey を開発・販売しています。