DEV Community

Cover image for Form Input Default Values With The jQuery valueFx() Plugin
Kevinleary.net
Kevinleary.net

Posted on Originally published at kevinleary.net

Form Input Default Values With The jQuery valueFx() Plugin

Have you ever wanted to provide forms with default values or examples to improve user experience? Here’s how you can do it in an easy, re-usable way using a jQuery plugin called valueFx.

This is a more agile, re-usable version of the Focus & Blur effects I’ve previously posted about. This can be used on as many text ‘s as you like, simply by adding class=”valueFx” to the tag.

For a better explanation of what this is visit the Search Field Focus & Blur Effects post.

XHTML

<input id="email" class="valueFx" name="email" type="text" value="you@domain.com" />
Enter fullscreen mode Exit fullscreen mode

JavaScript / jQuery Plugin

jQuery.fn.valueFx = function() {
  return this.each(function(){
    var $field = $(this);
    var $value = $(this).val();
    var $newVal;  
    $field.addClass('placeholder');
    $field.focus(function(){
      if($field.hasClass('valueFx')){
        if (($value == '') || ($value == $value)) {
          $field.removeClass('placeholder').addClass('focus').val('');
          $newVal = $(this).val();
        }
      }
    });
    $field.blur(function(){
      $newVal = $(this).val();
      if ($newVal == '') {
        $field.val($value).removeClass('focus').addClass('placeholder');
      } else {
        $field.removeClass('placeholder').removeClass('valueFx');
      }
    });
  });
};
Enter fullscreen mode Exit fullscreen mode

Simple Usage

$('input.valueFx').valueFx();
Enter fullscreen mode Exit fullscreen mode

Above is the easiest way to setup this plugin. Of course, I prefer to add a little more logic to make things more intuitive.

Advanced Usage

if ($('input.valueFx').length &gt; 0) {
  $.getScript('/path/to/jquery.valueFx.js',function(){
    $('input.valueFx').valueFx();
  });
}
Enter fullscreen mode Exit fullscreen mode

What this does is first check to see if there are any input fields in the document that have a class of “valueFx“. If there are, we’ll load in the jquery.valueFx.js file, and run a function once it has been loaded. This function (or callback) runs the valueFx() method on all the input’s that have been found.

Top comments (0)