javascriptとformについて質問です。


次のようなHTMLがあります。

<input type="submit" name="submit" value="決定">

サブミットボタンを押下すると、下のようにhiddenに変更してサブミットさせたいです。(type=submitの方はdisableにして)

<input type="hidden" name="submit" value="決定">

変なことを書くようですが、こういうことできますでしょうか?

(理由は、http://q.hatena.ne.jp/1266164117に関係していますが、1フォーム、複数サブミットボタンの2度押し制御対応について困っているためです。)

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2010/02/15 11:45:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:HowManyFiles No.1

回答回数24ベストアンサー獲得回数7

ポイント60pt
<html>
  <head>
    <title>button test<title>
    <script language="JavaScript">
    <!--
    function disablebutton(form)
    {
      var elements = form.elements;
      for (var i = 0; i < elements.length; i++)
      {
        if (elements[i].type == 'submit')
	    {
          elements[i].disabled = true;
        }
      }
    } 
    //-->
    </script>
  </head>
  <body>
    <p>ボタンを一度押すと無効になるはず。</p>
    <p>
	  <form	
        method="post"
		onClick="return disablebutton(this)">
          <input type="submit" value="ぽちっとな">
      </form>
  </body>
</html>

こんな具合でどうでしょうか。hiddenにすると、ユーザからみた場合に『なんか突然ボタンが消えた』となり、不親切な気がしましたので、ボタンを押せない状態にしてみました。13行目を以下のように書き換えるとhiddenにできると思います。

elements[i].type = 'hidden';
id:nemutaiyo

ありがとうございます。確かにhiddenに変更すると消えますね。

いろいろ調べたところ、以下を参考にしてできました。

http://d.hatena.ne.jp/naoya/20050804/1123152230

私の質問が分かりにくいところがあった点、お詫びします。

2010/02/15 11:44:40
  • id:nemutaiyo
    jQueryを使って、hiddenを生成することはできました。
    今、name='check'と固定としているので、
    ここを可変にしたいです。
    ボタンを押した対象のサブミットボタンのname属性を取得する方法を教えてください。
    #
    $(this).submit(function(){
    $(this).append("<input type='hidden' name='check' value='dummy'/>");
    });
  • id:Mook
    参照先の問題点と対策として下記がありましたが、
    http://d.hatena.ne.jp/naoya/20050804/1123152230
    それを見ても解決しないということでしょうか。
  • id:b-wind
    とりあえず、問題点はひとつなのに質問を同時に複数立てるのは止めたほうがいいよ。
    両方常に見ているわけではないので、回答する側も混乱するし論点がぼやける。
    まったく別の方向性の解が出るとこちらで回答する意味も無くなる。
  • id:nemutaiyo
    >Mookさん
    参照先をちゃんと読んでいませんでした。「一つの form の中に submit ボタンが複数あって、どのボタンが押されたかによってロジックを分岐させているような場合に痛い目に逢います。」って書いていますね。試します。

    >b-windさん
    すみません。少しずつ動かない理由が分ってきて、
    質問したいことがコロコロ変わってしまったため、
    別の質問を立てたしだいです。
  • id:nemutaiyo
    以下、参照先を参考にして、できました。
    お騒がせしてすみません。
    http://d.hatena.ne.jp/naoya/20050804/1123152230

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません