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