JavaScriptのFormのSubmitについて2点教えてください。



form.submit()を実行した時に、name属性を設定することはできますか?

<input type="submit" name="register" />として、サブミットボタンを押下したら、押下したボタンのname属性が送信されますが、form.submitの時にも同様のことがしたいです。

(やりたいことは、1つのフォームに複数のサブミットボタンがある状態で、アクション先でname属性によって処理を変更したいのです。Springを使用しています)


上記の、formやname属性などの仕様はHTMLの仕様ですよね。この仕様がまとまったサイトや書籍を教えてください。

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

回答5件)

id:deflation No.1

回答回数1036ベストアンサー獲得回数126

ポイント27pt

①できません。

下記のようにonClickで分岐させるべきです。

>||html|

<input type="submit" name="register1" onClick="register1() "/>

<input type="submit" name="register2" onClick="register2() "/>

||<


②HTML 4.01仕様書

http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/cover.html

id:nemutaiyo

できないですか。。

事情により、onClickの分岐ができない状況でして。

例えば、動的にsubmitボタンを生成した後に、そのボタンをJavaScriptで押下することってできないのでしょうか?(submitボタンの生成の仕方はわかりますが、JavaScriptで押下する方法がわかりません)

2010/09/23 14:15:07
id:Lhankor_Mhy No.2

回答回数814ベストアンサー獲得回数232

ポイント27pt

http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/interact/forms...

>1つのフォームに複数の提出ボタンがある場合、アクティブにされた提出ボタンのみが満足となる。

 

http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/DOM2-HTM...

submit

Submits the form. It performs the same action as a submit button.

No Parameters

No Return Value

No Exceptions

 

http://developer.mozilla.org/ja/DOM/form.submit

>このメソッドはフォームのsubmitボタンをクリックするのと同じ動作をします。

>もし (submitボタンのような)form control に submitのname または idがあっても、formのsubmitメソッドがマスクします。

 

とありますので、form.submitではできないのでしょう。

もちろん、イベントを拾ってごにょごにょすれば、同様のことはできるはずです。

id:nemutaiyo

「ごにょごにょ」部分をもう少し教えてください。

form.submitは、submitイベントを発生させない?と聞いたことがあります。(たしか、jQueryのsubmitハンドラではひっかからない といった感じで)

2010/09/23 14:16:57
id:khazad-Lefty No.3

回答回数181ベストアンサー獲得回数27

ポイント26pt

>JavaScriptで押下する方法がわかりません

作成したボタンのDOMオブジェクトに対してclick()メソッドを実行すればよいかと。

http://www.asagaotv.ne.jp/~kawasaki/js/jscripti.html#inputclick

id:nemutaiyo

click()メソッド知りませんでした。ありがとうございます!

2010/09/23 23:36:09

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 umI 112 11 0 2010-09-26 16:43:56
2 hanako393 1142 981 87 2010-09-29 02:06:51
  • id:Lhankor_Mhy
    ちょっと、やりたいことがわからないのでアレなんですが、これではダメですか?
     
    <form method ="get" action="test.html"/>
    <input type="submit" name="a"/>
    <input type="submit" name="b"/>
    </form>
    <script>
    var o = document.forms[0].elements;
    for(var i=0; i<o.length; i++){
    o[i].addEventListener('click', function(e){
    e.preventDefault();
    alert(e.currentTarget.name + 'をごにょごにょする');
    document.forms[0].submit();
    }, false)
    }
    </script>
  • id:nemutaiyo
    コードまで書いて頂きありがとうございます!早速試してみます。
  • id:Lhankor_Mhy
    ああ、ボタンの動的生成なんですね。
    jQueryを使ってよいなら、ライブイベントはどうでしょうか?
    スクラッチすると結構疲れそうなので。
     
    http://semooh.jp/jquery/api/events/live/type%2C+fn/
  • id:Cherenkov
    >JavaScriptで押下する方法
    ボタンelement.click()でいけます。この方法ならname属性が付きます。

    http://q.hatena.ne.jp/1275541054
    こちらの質問で実験したときに経験しました。
  • id:Cherenkov
    動的にsubmitボタンを追加して、それをclick()するサンプル作りました。name属性が送られていることが分かると思います。
    http://pastebin.mozilla.org/795329
  • id:nemutaiyo
    inputエレメントにclickメソッドがあるのですね!ありがとうございます!サンプルまで作って頂き感激です。
    今日の休みを利用して、オライリーのJavaScript本を読んで、少しずつ理解できるようになってきました。

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

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

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

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