Forum Moderators: open
I'm using input:focus but that isn't recognized by IE so, I'm looking for a cross-browser solution.
What I meant by not being able to hardcode is, normally I'd write:
<input name="email" type="text" onfocus="this.style.border='1px solid #FF6600'" onblur="this.style.border='1px solid #C1C1C1'" />
- To each form element. But the forms are generated with php and it isn't feasible to hardcode the php with the above code.
Javascript seems to be the best solution as it can detect form elements and add event listeners to them.
My problem is i'm useless at syntax and no matter how much I read about this solution I can't make it work.
So I'm still asking for some help!
Thanks :)
Note, stying form elements will give you inconsitent results. For example, I don't think you can style the border of select elements in IE6.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset:utf-8">
<style type="text/css">
input,
select,
textarea { border: 1px solid #c1c1c1; }
.hasFocus { border: 1px solid #f60; background-color: #ffc; }
</style>
<title></title>
<script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/yahoo-dom-event/yahoo-dom-event.js"></script>
<script type="text/javascript">
YAHOO.util.Event.on(window, 'load', function(){
// Attach focus event handlers
var inputs = document.getElementsByTagName('input');
var selects = document.getElementsByTagName('selects');
var textareas = document.getElementsByTagName('textarea');
YAHOO.util.Event.on([inputs, selects, textareas], 'focus', function(e){
YAHOO.util.Dom.addClass(this, 'hasFocus');
});
// Attach blur handlers
YAHOO.util.Event.on([inputs, selects, textareas], 'blur', function(e){
YAHOO.util.Dom.replaceClass(this, 'hasFocus', '');
});
});
</script>
</head>
<body>
<form action="">
<div id="container">
<input >
<select><option></option></select>
<textarea></textarea>
</div>
</form>
</body>
</html>