JQuery: So Nice - Hint Text for Inputs

11 Mar 2010

I ported this code to jquery.

Before:

// Script written by Drew Noakes -- http://drewnoakes.com
// 14 Dec 2006

var HintClass = "hintTextbox";
var HintClass2 = " searchBox";
var HintActiveClass = "hintTextboxActive";

// define a custom method on the string class to trim leading and training spaces
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); };

function initHintTextboxes() {
  var inputs = document.getElementsByTagName('input');
  for (i=0; i<inputs.length; i++) {
    var input = inputs[i];
    if (input.type!="text")
      continue;

    if (input.className.indexOf(HintClass)!=-1) {
      input.hintText = input.value;
      input.className = HintClass + HintClass2;
      input.onfocus = onHintTextboxFocus;
      input.onblur = onHintTextboxBlur;
    }
  }
}

function onHintTextboxFocus() {
  var input = this;
  if (input.value.trim()==input.hintText) {
    input.value = "";
    input.className = HintActiveClass + HintClass2;
  }
}

function onHintTextboxBlur() {
  var input = this;
  if (input.value.trim().length==0) {
    input.value = input.hintText;
    input.className = HintClass + HintClass2;
  }
}

window.onload = initHintTextboxes;

After:

// Hint Text ported to JS by Dan Hixon
// 11 Mar 2010 - just give an input a value and a class of "hinter"
$(document).ready(function(){
	$('.hinter')
		.each(function(){
			$(this).attr("hintText",$(this).val());
		})
		.focus(function(){
			if($(this).val()==$(this).attr("hintText"))
				$(this).val('');
		})
		.blur(function(){
		  if($(this).val()=="")
			  $(this).val($(this).attr("hintText"));
		});

});