2011-11-12 7 views
1

私はいくつかのボタンを含むフォームを持っています。どのボタンがクリックされたとしても(名前属性はすべて異なります)、フォームがサブミットされているので、どのボタンをクリックしたかを確認する方法がわかりません。これを行う方法はありますか?各ボタンは、この例のようになります。ボタンに名前を与えるフォームを使用して特定のボタンの名前を送信する

<input class='menuitem' type='submit' value="Bowl of Cheerios" name="5" /> 
+0

あなたは 'ID'タグを使用できませんか? –

+0

はい私もそれを使用することができますが、その値をPOSTで送信する方法は名前を送信するのと同じではありませんか? – muttley91

答えて

1

は、POST中に含まれるか、ユーザーがそのボタンをクリックしてフォームを送信したときにGETされることを意味します。

<input type="submit" name="myButton" value="submit button 1 was clicked" /> 
<input type="submit" name="myButton" value="submit button 2 was clicked" /> 

<?php echo ($_POST ['myButton']); ?> 

値がボタンに表示されているテキストから取得されるため、国際化に関する問題が発生する可能性があります。より良いアプローチは、あなたがこのアプローチに心に留めておく必要があるすべてのボタンに別の名前を提出し、特定のボタンの有無をチェック

<input type="submit" name="myButton1" value="submit button 1 was clicked" /> 
<input type="submit" name="myButton2" value="submit button 2 was clicked" /> 

<?php echo (isset ($_POST ['myButton1'])? 'Button 1 was clicked': ''); ?> 
<?php echo (isset ($_POST ['myButton2'])? 'Button 2 was clicked': ''); ?> 

ことの一つは、ユーザーがない場合はクリックしないということである与えることですフォームを送信するボタンのいずれかを入力した場合は、送信ボタンの値はまったく取得されません。これは、たとえば、ユーザーがテキスト入力でenterを押すと発生します。このケースを処理する必要があります。

あなたが覚えておかなければならないもう一つのことは、<button>タグです。このタグは、タイプをsubmitに設定することによってサブミットボタンとして使用することができ、スペックに従って入力タイプ=送信ボタンのように動作する必要があります。ボタンは、単純な入力送信よりも豊富なコンテンツを持つことができ、そのコンテンツとは独立した値を持つことができます。値は、ユーザーがボタンをクリックしたときにサーバーにポストバックする必要があります。しかし

<button type="submit" name="myButton" value="1"><img src="button1.png" alt="Button 1" /></button> 
<button type="submit" name="myButton" value="2"><img src="button2.png" alt="Button 2" /></button> 

<?php echo ($_POST ['mybutton']); ?> 

または

<button type="submit" name="myButton1" value="The value is not relevant in this case"><img src="button1.png" alt="Button 1" /></button> 
<button type="submit" name="myButton2" value="The value is not relevant in this case"><img src="button2.png" alt="Button 2" /></button> 

<?php echo (isset ($_POST ['myButton1'])? 'Button 1 was clicked': ''); ?> 
<?php echo (isset ($_POST ['myButton2'])? 'Button 2 was clicked': ''); ?> 

、Internet Explorer 7つのファウルこのアップの代わりにクリックされたボタンの値に、クリックされたボタンの内容を提出することもできます。

これはIE7の大きな部分ですが、「すべての送信ボタンには異なる名前があります」というテクニックを使用して対処することができます。

しかし、IE6を使用している場合、状況はさらに悪化します。ボタンが付いたフォームを送信すると、EVERYボタンの値が送信されるためです!これにより、IE6のユーザーがクリックしたボタンを決定することは基本的に不可能です。この場合の唯一の手段は、複数の送信ボタンがフォームと共に送信されたかどうかを検出し、正常に失敗した場合に検出することです。

IE6をサポートする必要がある場合は、ボタンタグを使用できません。

希望すると便利です。