參考建設銀行網站,輸入控制項獲得焦點時變色,失去焦點還原。若逐一設定 CssClass 太繁瑣,可寫一個遞迴方法自動掛載 onfocus/onblur 事件。
public class BasePage : Page
{
public static void SetInputControlsHighlight(Control container, string focusCssClass, bool onlyTextBoxes)
{
foreach (Control ctl in container.Controls)
{
bool isInput = ctl is TextBox
|| ctl is DropDownList
|| ctl is ListBox
|| ctl is CheckBox
|| ctl is RadioButton
|| ctl is RadioButtonList
|| ctl is CheckBoxList;
if ((onlyTextBoxes && ctl is TextBox) || (!onlyTextBoxes && isInput))
{
WebControl wctl = ctl as WebControl;
if (wctl != null)
{
wctl.Attributes["onfocus"] = string.Format("this.className = '{0}';", focusCssClass);
wctl.Attributes["onblur"] = "this.className = '';";
}
}
else if (ctl.Controls.Count > 0)
{
SetInputControlsHighlight(ctl, focusCssClass, onlyTextBoxes); // 遞迴處理容器控制項
}
}
}
}
BasePage 的頁面基底類別(如 MyPage : BasePage)。MyPage 而非 Page。Page_Load 呼叫:BasePage.SetInputControlsHighlight(this, "inputFocus", false);.inputFocus { background-color: #FFFFCC; border: 1px solid #FFA500; }onlyTextBoxes 參數控制是否僅針對 TextBox。