ユーザーがキー入力するか、[送信]ボタンを押した場合、どのようPHPを確認できますか?

StackOverflow https://stackoverflow.com/questions/795132

  •  18-09-2019
  •  | 
  •  

質問

私が持っている問題は、私は、単一の形式で入力を複数提出していることです。これらのそれぞれは、入力を提出異なる値を持って、私は提出してそれらを保つことを好むだろう。

ユーザーは、最上位の提出入力が押下されている、そしてそれは、入力がクリックされたコードのチェックのために問題を引き起こしているかのように。

それは、入力します。を押すたびに

PHPは、入力がクリックされたかどうかを決定するための方法はあります、またはユーザーは、入力します。キーを押したときに?

選択しただけで入力されました
役に立ちましたか?

解決

あなたは正しくHTMLを構築して設けられた使用されたボタンを識別することができます。

<input type="submit" name="action" value="Edit">
<input type="submit" name="action" value="Preview">
<input type="submit" name="action" value="Post">

$_POSTアレイ(または$_GET/$_REQUEST)が制定されたボタン(クリックされたか否か)の値を持つキー「アクション」を含むであろう。

さて、「クリック」明示的にクライアント側の動作です - あなたは、クリックしてキー入力を区別したい場合、あなたはその決意を支援するために、フォームにいくつかのスクリプトを追加する必要があります。

編集

また、あなたは「卑劣」こと、それは正確に識別する必要が提出隠れて使用することができ、キープレス提出するため、これはおそらく、アクセシビリティにいくつかの重大な影響を持っています。

<?php

if ( 'POST' == $_SERVER['REQUEST_METHOD'] )
{
    echo '<pre>';
    print_r( $_POST );
    echo '</pre>';
}

?>
<form method="post">

    <input type="text" name="test" value="Hello World">

    <input type="submit" name="action" value="None" style="display: none">
    <input type="submit" name="action" value="Edit">
    <input type="submit" name="action" value="Preview">
    <input type="submit" name="action" value="Post">

</form>

他のヒント

ロベルト、

PHPは、サーバー側の技術であるため、サーバー上で実行されます - それはどこ(ユーザー別名)クライアントでプレス何のキーを決定するために方法はありません。あなたは、特にサーバ要求(投稿フォームデータがあまりにも要求の形式である)と、そのような情報を含むように、クライアント側のコードをしない限り、それは、もちろん、あります。

それを達成するための一つの方法は、あなたのクライアントコードにJavascriptを使用しているます。

取り扱いフォームはJavascriptを使用してイベントを提出に関する出発点として、このページを参照してください。 http://www.w3schools.com/jsref/jsref_onSubmit.aspする

また、Enterキーを押してから、この情報を記録し、ユーザーをキャプチャするために、ページ上のキープレスイベントのリスナーを追加する必要があります。 http://www.howtocreate.co.uk/tutorials/javascript/domeventsは、JavaScriptでイベントリスナーを追加/削除のトピックに関する議論を提供していますが、不適切に、彼らは不幸なユーザーのためのデバッグおよび原因に困難なメモリリークの原因となる可能性が使用されているため、あなたは、イベントを使用しているときに非常に注意する必要があります。)

だけではPHPはPHPは、サーバー側の言語である一方、それはクライアント側で発生しているため、フォームは、イベントがトリガされた提出方法を決定することはできません。そして、サーバ側にログを記録 - - あなたはをリッスンするためにJavascriptを実装する必要があると思います。キーの押下やマウスクリックし、次にデータは、あなたが探しているものを見つけるためにすることを分析します。

さて、PHPを伝えることができます。のどのの入力を提出する他はありませんが、それはフォームデータに表示されるように、トリガされました。ほとんどのブラウザでは、最初にデフォルト(のキーを押して入力にトリガーされる1)の入力を提出します。トリガされる提出制御するように、あなたはすべてのあなたの提出を注文し直すことができます。

PHPが実際にクライアント側で何が起こったのか分からないことができます。

私はJavaScriptを使用してお勧めします。ユーザーがアクションを行うと、それをキャッチし、フォームをsubmitedされる隠しフィールドに保管してください。また、入力がアクティブになって何を追跡し、隠しフィールドに格納することができます。

のコードは、

(私は、構文をチェックするdidntの)ビットそのように行くだろう
<input type="text" onfocus="setCurrent(this)" id="1" />
<input type="hidden" id="hid" />

function setCurrent(o){
  $('hid').value = o.id;
}

私はキャッチイベントや隠しフィールドで遊んでは、あなたが望む結果を与えるべきだと思います。

助け

希望

これは、クライアント側でのマークアップを書き込む方法です。

たとえば、ここにあなたがこれを行うことが1(非XHTML)の方法があります:

HTMLファイルでます:

<form method="post" action="myform.php" id="myform">
  ... form items here ...

<input type="submit" name="enter_key" value="true" style="display:none">
<input type="hidden" name="pressed_button" id="pressed_button" value="false">
<input type="button" value="Submit"
  onclick="document.getElementById('pressed_button').value='true';document.getElementById('myform').submit();">
</form>

myform.phpでます:

if ($_POST['pressed_button']=='false') {
   // Logic for enter key
} else {
   // Logic for button press
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top