0

テキストボックスとボタンのあるページがあります。ページが読み込まれるとき、多くの場合、フォーカスはテキストボックスの1つにあり、これが発生することは望ましくありません。ただし、ページの読み込みイベントでsetfocusのようなものを使用したくないのは、ボタンをクリックするとページがジャンプするためです。ページの読み込みに焦点を合わせるという問題について、テキストボックスやコントロールをどのように防ぐのですか?

4

3 に答える 3

1

変。デフォルトでは、フォーカスを設定しない限り、ページはどのフォーム入力にもフォーカスしません。

ページの Setfocus ですべてのフォーカスをキャンセルする必要があると思います。

protected void Page_Load(object sender, EventArgs e)
{
    // make sure its not a postback
    if (!IsPostBack)
    {
        // your code
        InitForm();
        InitBlaBlaBla();
        SetFocusOnThis();
        SetFocusOnThat();

        // cancel all focus
        Focus();
    }
    else 
    {
        // this is a postback, 
        // set focus on control which make post back
        Control control = null;

        if (!string.IsNullOrEmpty(Page.Request.Params[postEventSourceID]))
        {
            control = Page.FindControl(Page.Request.Params[postEventSourceID]);
        }
        else
        {
            // if postEventSourceID is null, its a button
            // find it by iterating all controls

            foreach (string ctl in Page.Request.Form)
            {
                Control c = Page.FindControl(ctl);
                if (c is System.Web.UI.WebControls.Button)
                {
                    control = c;
                    break;
                }
            }
        }

        // finally 
        control.Focus();

    }
}
于 2009-08-08T19:12:01.797 に答える
1

基本的に私がやりたいことは、別のページからのリダイレクトの結果としてページがロードされたときです。テキストボックスにフォーカスを設定せず、通常どおりページをロードしますが、ページ上のコントロールをクリックした結果としてページがロードされた場合ページ、そのコントロールに/近くにフォーカスを保ちます。

これを達成するには、post backをテストする必要があります。ページがポストバックされたことを検出した場合は、意図したとおりにコントロールにフォーカスを設定できます。そうしないと、ページがポストバック (GET) されないため、コントロールへのフォーカスを避けることができます。

私の知る限り、既定では、ASP.NET Web フォームはどのtextboxes にもフォーカスを設定しません。にフォーカスを設定するコード ビハインド メソッドがありませんtextboxか?

于 2009-08-08T19:12:23.527 に答える
0

freetextbox コントロールが IE7 および IE6 でこの動作を示すことが判明しました。彼らが調査しているバグです。

于 2009-08-11T23:39:32.440 に答える