So as you know the “placeholder” attribute is supported only in the newest browsers. If you want a placeholder in all browsers you’ll need to write some JavaScript and here is how to do it.
Using my approach you’ll need to set up both the value and the title tag of the input element to the placeholder you want to use. Here is an HTML example:
<form action="" method="post" id="contact-form">
<input type="text" name="name" id="name" value="Your name" title="Your name"/>
<input type="text" name="subject" id="subject" value="Subject" title="Subject" />
<input type="text" name="email" id="email" value="Your email address" title="Your email address" />
<textarea name="msg" id="msg" title="Your message">Your message</textarea>
<input type="submit" id="contact-form-submit" value="Send" />
</form>
Here is some css just to make it more pleasing
#contact-form textarea, #contact-form input[type=text] {
border: none;
padding: 10px;
margin: 0 0 15px 0;
box-sizing: content-box;
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box;
font-size: 15px;
resize: vertical;
background-color: rgb(197, 236, 255);
width: 320px;
color: rgb(0, 70, 158);
}
and here comes jQuery, watch the comments
jQuery(document).ready(function(){
// on focusing
jQuery('#contact-form input[type=text], #contact-form textarea').focus(function() {
// check if the current value equals the one in the title attribute
if ( jQuery(this).val() == jQuery(this).attr("title")) {
// if so replace the current value with empty string or no value
jQuery(this).val("");
}
});
// on blur or the input element going out of fucus
jQuery('#contact-form input[type=text], #contact-form textarea').blur(function() {
// check if the current value is empty
if ( jQuery(this).val() == "") {
// if it is empty set the value to the text in the title attribute( restoring the placeholder )
jQuery(this).val($(this).attr("title"));
// this is just a beauty touch
// when the placeholder is active set the color to something more neutral
// so that the user can notice the difference between a placeholder and actual value
jQuery(this).css("color", "rgb(24, 179, 255)");
}
});
// this also part of the beauty touch
// if you don't mind the color of the placeholder you can skip this
// check if the user has just pressed a key
jQuery('#contact-form input[type=text], #contact-form textarea').keyup(function() {
// if so set the color to slightly darker tone
// this is again only in order for the user to be able to make the difference
// between a placeholder and a value easily
jQuery(this).css("color", "rgb(0, 70, 158)");
});
});
That’s all you need