65.9K
CodeProject 正在变化。 阅读更多。
Home

在焦点处更改文本框/输入框的背景颜色

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.23/5 (9投票s)

Mar 23, 2008

CPOL

2分钟阅读

viewsIcon

129557

downloadIcon

1116

当选中时,更改 asp.net 文本框和列表框的背景颜色。

textFocus.JPG

引言

以下示例代码说明了如何将焦点背景颜色更改效果添加到常见的 asp.net 控件,例如 TextBox 或 ListBox。 这种效果可以改善用户界面,但未作为 asp.net 控件的内置属性包含在内。 提出的解决方案在 Internet Explorer 和 firefox 中均有效。 我在网上找到了其他 CSS 技术可以实现相同的结果,但由于其对 CSS 的支持不完整,它们在 Internet Explorer 中无法工作。 提出的策略也适用于嵌套主页。

附带了一个简单的 asp.net Web 项目,演示了预期的效果。

上面的图显示了当文本框被选中(或获得焦点)时,其背景颜色会发生变化。 下面的图显示了当列表框被选中(获得焦点)时,效果如何。 如您所见,文本框的背景颜色已恢复,而列表框的背景颜色为黄色。

lbFocus.JPG

使用代码

以下是主页中的主要函数。 主页包含一个名为 ContentPlaceHolder1 的主要 ContentPlaceHolder。 addBlurAtt 函数在主页的 Page_Load 事件期间调用。 此函数从 ContentPlaceHolder1 控件开始,递归地遍历所有子控件,查找 TextBox 或 ListBox 类型的控件。 当找到这些控件时,它会添加属性,以便在 onFocus 和 onBlur 事件上调用两个不同的 javascript 函数。

protected void Page_Load(object sender, EventArgs e) 
{ 
    addBlurAtt(ContentPlaceHolder1); 
} 
//recursive function that adds attribute to all child controls 
private void addBlurAtt(Control cntrl) 
{ 
    if (cntrl.Controls.Count > 0) 
    { 
        foreach (Control childControl in cntrl.Controls) 
        { 
            addBlurAtt(childControl); 
        } 
    } 
    if (cntrl.GetType() == typeof(TextBox)) 
    { 
        TextBox TempTextBox = (TextBox)cntrl; 
        TempTextBox.Attributes.Add("onFocus", "DoFocus(this);"); 
        TempTextBox.Attributes.Add("onBlur", "DoBlur(this);"); 
    } 
    if (cntrl.GetType() == typeof(ListBox)) 
    { 
        ListBox TempTextBox = (ListBox)cntrl; 
        TempTextBox.Attributes.Add("onFocus", "DoFocus(this);"); 
        TempTextBox.Attributes.Add("onBlur", "DoBlur(this);"); 
    } 
} 


以下是两个 javascript 函数 DoFocusDoBlur。 这些函数基本上更改了控件的 css 类。
function DoBlur(fld) 
{
    fld.className='normalfld';
}

function DoFocus(fld) 
{
    fld.className = 'focusfld';
}
以下是 javascript 函数使用的两个类。
.normalfld
{
    background-color: #FFFFFF;
}
.focusfld
{
    background-color: #FFFFCC;
}
我已经在我的项目中使用了这种策略很长时间了。 我还没有看到任何问题。
© . All rights reserved.