検索テキストボックスとボタンがあり、マウスを使用してクリックすると、テキストボックスのテキストがサーバーサイドコードで使用されて結果がフィルタリングされます...舞台裏でこれはAjaxを使用して行われ、これは正常に機能します。
clientdie keypress イベントを作成したいので、ユーザーがボックスで Enter キーを押すと、検索ボタンがクリックされます。
('#somebutton').click() (または同等の ('#somebutton').trigger("click")) を使用すると、テキスト ボックスのキープレス イベント内でサーバー側のコードが実行されますが、古いテキスト ボックスの検索値が使用されます。 …これは何が起こっているかの例です。
【マウスを使う】
- 検索ボックスに「Mary」と入力し、マウスで検索をクリックすると、Mary の結果が返されます。
- 検索ボックスに「ボブ」と入力し、マウスで検索をクリックすると、ボブの結果が返されます。
【Keypressイベントとトリガークリック方式を利用する場合】
- 検索ボックスに「Mary」と入力して Enter キーを押すと、「」の結果が返されます。
- 検索ボックスに「Bob」と入力して Enter キーを押すと、Mary の結果が返されます。
$(document).ready イベント内で実行されるクライアント側のコードを次に示します。
$('.txtSearch').keypress(function(event){
var keycode = (event.keyCode ? event.keyCode : event.which);
if(keycode == '13'){
$('.btnSearch').click();
}
});
JQueryを介したクリックイベントが現在の検索テキストボックスの値を取得しない理由を誰かが説明できますが、実際にマウスでボタンをクリックすると取得できますか?
ありがとう...
また... この検索ボックスはカスタム ビルドのサーバー コントロールであるため、テキスト ボックスやボタンなどのコンポーネントは、Control.CreateChildControls メソッドで毎回コードで作成されます。
ここからの私の唯一の推測は
検索ボタンをクリックすると、JQuery.click() メソッドを使用する場合よりもライフサイクルの後半でサーバー側のクリック イベントが何らかの形で発生します... (これである可能性は低い) または
ビューステートデータに関する何か。おそらく、クリック イベントを発生させる JQuery メソッドによって、viewstate データが必要になった後にサーバー コントロールにバインドされる可能性があります。