0

奇妙な問題があります。

asp.net (C#) には、テキスト フィールドとボタンを備えた Web フォームがあります。

テキスト フィールドでは、text_changed イベントで自動ポストバックが有効になっています。ボタンもクリック感があります。

フィールド内のテキストが変更され、ユーザーが最初にテキスト フィールドへのフォーカスを失わずにボタンをクリックすると、サーバー上で 2 つのイベントが「衝突」したように見え、リクエストが何も返さないのに 2 ~ 3 分かかります。

フィールド内のテキストが変更され、ボタンがクリックされる前にフィールドがフォーカスを失った場合、イベントは個別に発生し、すべて問題ありません。

ユーザーがテキストを変更したときに、すぐにボタンをクリックできるようにする必要があります。

他の誰かがこの問題を見たことがありますか? もしそうなら、どのように回避しますか?

4

2 に答える 2

0

これで問題が解決するかどうかはわかりませんが、次のことを試してください。

protected void TextBox2_TextChanged(object sender, EventArgs e)
{
    if (Request.Form.Get("__EVENTTARGET") == Button2.UniqueID)
        return;
    Debug.WriteLine(TextBox2.Text);
}

protected void Button2_Click(object sender, EventArgs e)
{
    Debug.WriteLine("Text");
}

EventTarget のチェックに注意してください。これをテストしたところ、ボタンをクリックしても(タブを使用せずに)クリックイベントが無視され、テキスト変更イベントのみが発生するように見えました。テキスト変更イベントに追加のチェックを追加すると、これが解決するようです。ただし、これはわずかな欠陥ですが、テキスト変更イベントが 2 回呼び出されることがあります (常にではありません)。コードでこれを処理する必要がある場合があります。

于 2013-08-16T10:24:38.373 に答える
0

jqueryを使ったほうがいいです。

better to Use Keyup Or Keydown of jquery event instead of textchanged event. 
and false the autopost property of textbox.
于 2013-08-16T09:32:33.037 に答える