2009-11-10 10 views
20

これは私の情報のためのものではありません(これは動作するように4つの異なる回避策を考えることができるからです。あまりにも特別な)が、送信ボタンを。Javascript Submitには送信ボタンの値が含まれていません

<input type='submit' name='submitDocUpdate' value='Save'/> 

を、それに関連付けられた特定の値を持っており、フォームが送信されますとき、私はその名前を確認します。

if(isset($_POST['submitDocUpdate'])){ //do stuff 

をしかし、私は「1時間があります送信ボタンではなくJavascriptでフォームを送信しようとしています。

document.getElementById("myForm").submit(); 

1つの問題を除いて、うまくいきます。 javascriptメソッドを介して送信された$ _POST値を見ると、submitDocUpdateは含まれていません。フォームの他の値はすべて取得しますが、送信ボタンの値は取得しません。

私が言ったように、私はそれを回避するためにいくつかの方法を考えることができます(非表示の変数を使用して、別のフォーム変数などでチェックする)が、これはsubmit()それは私にとっては直感的ではないようです。前もって感謝します。

答えて

26

はい、それは彼らがクリックされた送信ボタンの値を(送信するようにHTMLフォームが設​​計されていますので、あなたの送信ボタンの値が送信されない理由があるHTMLFormElement.submit()

の正しい動作ですまたは他の方法で活性化される)。これにより、「プレビュー」アクションと「保存」アクションの両方を実行するシナリオなど、フォームごとに複数の送信ボタンが可能になります。

フォームをプログラムで送信するため、個々の送信ボタンに明示的なユーザーアクションがないため、何も送信されません。

+0

ああ。それは多くの意味があります。私は複数のサブミットボタンをプログラム的に提出するというコンセプトは考えていませんでした(私は頻繁に複数回使用しません)。ありがとう;) –

+0

迷惑です。フォームを送信したとき(ボタンがクリックされたとき)にトリガされる '$ form.on( 'submit'、function(){});を使用していますが、それでもボタンをクリックできるようにオーバーライドしているようです。ボタンを無効にするためにボタンを無効にするために、ページを変更したいときにonclickがフォームを送信しないようにしていたので、onsubmitを使ってみましたが...ボタンを無効にしています...後...あなたの説明のおかげで! – Jake

7

代わりに以下を使用してみませんか?

<input type="hidden" name="submitDocUpdate" value="Save" /> 
+0

@Tim Cooper - フォームに複数のボタンがある場合はどうなりますか? – MarcoZen

1

送信ボタンの値は、ユーザーがボタンをクリックすると送信されます。 form.submit()を呼び出すと、ボタンはクリックされません。複数のサブミットボタンがあり、form.submit()関数はどのフォームをサーバーに送信するかを知る方法がありません。

9

jQueryの1.0以上のバージョンを使用して:私はこの記事につまずいたとき、私は実際には同じ問題を通して働いていた

$('input[type="submit"]').click();

を。任意の引数を指定しないでclick()を実行すると、選択した要素のクリックイベントが発生します。http://api.jquery.com/click/

+0

非常に面白いヒント。ありがとう。 –

1

回答はテクニカルですが、あなたが割り当てたい値を運ぶ方法があります。実際には、fromがサーバーにサブミットされるときに、サブミット・ボタンの値は、サブミット・ボタンに付けた名前に関連付けられます。それがMarcinのトリックがどのように機能しているのか、あなたが使っているものに応じてそれを達成できる方法がいくつかあります。 Ex。jQueryの中で、あなたは、私が使用するMVCで

data: { 
    submitDocUpdate = "MyValue" 
} 

を渡すことができます。

@using (Html.BeginForm("ExternalLogin", "Account", new { submitDocUpdate = "MyValue" })) 

これは私がOAuthのを使用してログインリンクとしてthier自身の画像を使用しての蒸気の要件を遵守する方法実際にある:

@using (Html.BeginForm("ExternalLogin", "Account", new { provider = "Steam" }, FormMethod.Post, new { id = "steamLogin" })) 
{ 
    <a id="loginLink" class="steam-login-button" href="javascript:document.getElementById('steamLogin').submit()"><img alt="Sign in through Steam" src="https://steamcommunity-a.akamaihd.net/public/images/signinthroughsteam/sits_01.png"/></a> 
} 
関連する問題