ASP.net Webフォームでは、誰かが入力したテキストボックスをどのように検出しますか?
Javascript の回答はご遠慮ください。
VB.NET を使用してコード ビハインドですべて処理する必要があります。
javascriptなしでは実行できないと思われます-Enterキーを押すと、ブラウザはフォームを送信します-どのフィールドにフォーカスがあったかは送信しません。したがって、JS を使用して、送信されるフォームにその情報を追加しない限り、運が悪いことになります。
どの TextBox が押されたかを特定する必要があるのはなぜですか? 適切なボタン クリック イベントをトリガーできるように、どの TextBox がフォーカスされていたかを確認しますか?
このようなことをしようとしている場合、私が行った 1 つのトリックは、独自のパネル内で適切なフォーム要素を「グループ化」し、それに応じて「DefaultButton」プロパティを設定することでした。
これを行うと、「名前で検索」、「部門で検索」、「ID で検索」などを 1 つのフォームにテキストボックスとボタンの組み合わせで表示でき、ユーザーはクエリ パラメータを入力して Enter キーを押すことができます。コードビハインドで適切な検索メソッドが呼び出されるようにします。
Javascript を使用しないと、それはできません。その情報は、クライアント ブラウザからサーバーに伝達されません。
私の知る限り、サーバー側のスクリプトがそれを検出する方法はありません。サーバーに送信されないだけです。クライアント側で (つまり、Javascript を使用して) 実行してから、サーバーに送信する必要があります。
サーバー側の Request.Form オブジェクトを調べて、検索ボックスに値があるかどうかを確認することで、あるサイトの検索でこれを解決しました。すべてのページ(またはマスターページの基本クラス)が継承する基本クラスでそれを行いました。値がある場合、誰かが何かを入力して Enter キーを押した可能性はかなり高いので、検索を処理しました。
イベント ハンドラーでは、「ソース」オブジェクト (イベント ハンドラーの最初のパラメーター) は、イベントを発生させるオブジェクトです。ボタンに入力して名前を取得するか、リフレクションを使用して型指定されていないオブジェクトから情報を取得します。
さらに、コントロールが Web コントロールの子であり、独自のイベントを発生させていない場合 (つまり...)、OnBubbleEvent を使用して何が起こっているかを判断できます。OnBubbleEvent には、入力したり、リフレクションを使用したりできる "source" パラメーターもあります。