I have a ASP text box control. When the user focuses on text box, i want to change the background color of the text box from gray to white.
here is the css file, but its not changing the color after focusing on the text box.
<script language="javascript" type="text-javascript">
function DoFocus(txt)
{
txt.className = 'focus';
}
</script>
Textbox
<asp:TextBox ID="txtFirstName" runat="server"
CssClass="textbox" MaxLength="50" Width="188px" onfocus="DoFocus(this)">
CSS
input.textbox, select, textarea
{
font-family : verdana, arial, snas-serif;
font-size : 11px;
color : #000000;
padding : 3px;
background : #f0f0f0;
border-left : solid 1px #c1c1c1;
border-top : solid 1px #cfcfcf;
border-right : solid 1px #cfcfcf;
border-bottom : solid 1px #6f6f6f;
}
input.textbox:focus, input.input_text_focus
{
border-color:#646464;
background-color:#ffcf03;
}
EDIT: I saw you updated your post, so to clarify: ASP creates an input
HTML element (correct me if I'm wrong) and you can always style this via the :focus
selector in CSS, no need for Javascript, but also add input.textbox:active
to catch some buggy IE...
input.textbox:focus, input.textbox:active {
/* everything you put here will be aplied to ANY focused input element */
}
Judging from your pasted code, instead of
.input_text:focus, input.input_text_focus {
border-color:#646464;
background-color:#ffffc0;
}
use
input.textbox:focus, input.input_text_focus {
...
}
Or why do you suddenly use the class input_text
when you have input.textbox
in the firsthand? Your two selectors don't match...
Here an approach with the use separated CSS classes specified via javascript:
<style type="text/css">
input.FocusedStyle
{
background-color:#ffffc0;
border-color:#646464;
}
</style>
<script type="text/javascript">
function OnBlur(textBox) {
textBox.className = '';
}
function OnFocus(textBox) {
textBox.className += ' FocusedStyle';
}
</script>
<asp:TextBox ID="txt" runat="server" onblur="OnBlur(this);" onfocus="OnFocus(this);"></asp:TextBox>
TEXTAREA, INPUT[type="text"]
{
font-family : tahoma, arial, snas-serif;
font-size : 11px;
color : #000000;
padding : 3px;
background : #EEEfff;
border-left : solid 1px #c1c1c1;
border-top : solid 1px #cfcfcf;
border-right : solid 1px #cfcfcf;
border-bottom : solid 1px #6f6f6f;
}
INPUT[type="text"]:focus, INPUT[type="text"]:active
{
border-color:#646464;
background-color:#ffcf03;
}
You cannot do it by just using css. you have to use javascript as well. For example:
<asp:TextBox runat="server" id="myTextbox" onfocus="DoFocus(this)" onblur="DoBlur(this)"></asp:TextBox>
the javascript section:
<script language="javascript" type="text/javascript">
function DoFocus(txt)
{
txt.className = 'focus';
}
function DoBlur(txt)
{
txt.className = 'unfocus';
}
</script>
and the css:
input.textbox, select, textarea, unfocus
{
font-family : verdana, arial, snas-serif;
font-size : 11px;
color : #000000;
padding : 3px;
background : #f0f0f0;
border-left : solid 1px #c1c1c1;
border-top : solid 1px #cfcfcf;
border-right : solid 1px #cfcfcf;
border-bottom : solid 1px #6f6f6f;
}
.focus
{
border-color:#646464;
background-color:#ffffc0;
}
You can find some good examples at:
http://www.codeproject.com/KB/aspnet/inputBgOnFocus.aspx
http://viralpatel.net/blogs/2009/09/change-form-input-textbox-style-focus-jquery.html
http://forums.asp.net/t/1134964.aspx/1