Drupal 5: Replacing form field help text with hover messages using CSS and jQuery

Here’s how you can replace a form field’s help message with a message that follows the user’s mouse when they hover over a form input. This can be useful in forms that are large and complicated.

CSS for the floating message:

#floatingMessage, #floatingMessage.hidden {
  display: none;
}

#floatingMessage.visible {
  display: block;
  position: absolute;
  background-color: white;
  border: 2px solid black;
  padding: 5px;
  z-index: 7;
  max-width: 200px;
}

jQuery:

$(document).ready(function(){

  // check to see if floatingMessage exists in DOM
  if ($(document).find('#floatingMessage').length==0) {
    $('body').append("<div id='floatingMessage'></div>");
  }

  $('form#node-form div.form-item').each(function(){
    result = $(this).find('div.description').length;
    if (result) {
      // hide description
      $('div.description:first', this).hide();

      $(this).hover(
        function(){

          // get message html
          description = $('div.description:first', this).html();

          // set message html
          $('#floatingMessage').html(description);

          // set message position
          $(this).mousemove(function(e){
            $('#floatingMessage').css({
              top: e.pageY+15 + 'px',
              left: e.pageX+15 + 'px',
            });
          });

          // show message
          $('#floatingMessage').removeClass('hidden').addClass('visible');

        },
        function(){

          // hide message
          $('#floatingMessage').removeClass('visible').addClass('hidden').html('');

        }

      );
    }
  });
});

Screenshot:

hover

Updated: