-/**
- * jQuery.labelify - Display in-textbox hints
- * Stuart Langridge, http://www.kryogenix.org/
- * Released into the public domain
- * Date: 25th June 2008
- * @author Stuart Langridge
- * @version 1.3
- *
- *
- * Basic calling syntax: $("input").labelify();
- * Defaults to taking the in-field label from the field's title attribute
- *
- * You can also pass an options object with the following keys:
- * text
- * "title" to get the in-field label from the field's title attribute
- * (this is the default)
- * "label" to get the in-field label from the inner text of the field's label
- * (note that the label must be attached to the field with for="fieldid")
- * a function which takes one parameter, the input field, and returns
- * whatever text it likes
- *
- * labelledClass
- * a class that will be applied to the input field when it contains the
- * label and removed when it contains user input. Defaults to blank.
- *
- */
-jQuery.fn.labelify = function(settings) {
- settings = jQuery.extend({
- text: "title",
- labelledClass: ""
- }, settings);
- var lookups = {
- title: function(input) {
- return $(input).attr("title");
- },
- label: function(input) {
- return $("label[for=" + input.id +"]").text();
- }
- };
- var lookup;
- var jQuery_labellified_elements = $(this);
- return $(this).each(function() {
- if (typeof settings.text === "string") {
- lookup = lookups[settings.text]; // what if not there?
- } else {
- lookup = settings.text; // what if not a fn?
- };
- // bail if lookup isn't a function or if it returns undefined
- if (typeof lookup !== "function") { return; }
- var lookupval = lookup(this);
- if (!lookupval) { return; }
-
- // need to strip newlines because the browser strips them
- // if you set textbox.value to a string containing them
- $(this).data("label",lookup(this).replace(/\n/g,''));
- $(this).focus(function() {
- if (this.value === $(this).data("label")) {
- this.value = this.defaultValue;
- $(this).removeClass(settings.labelledClass);
- }
- }).blur(function(){
- if (this.value === this.defaultValue) {
- this.value = $(this).data("label");
- $(this).addClass(settings.labelledClass);
- }
- });
-
- var removeValuesOnExit = function() {
- jQuery_labellified_elements.each(function(){
- if (this.value === $(this).data("label")) {
- this.value = this.defaultValue;
- $(this).removeClass(settings.labelledClass);
- }
- })
- };
-
- $(this).parents("form").submit(removeValuesOnExit);
- $(window).unload(removeValuesOnExit);
-
- if (this.value !== this.defaultValue) {
- // user already started typing; don't overwrite their work!
- return;
- }
- // actually set the value
- this.value = $(this).data("label");
- $(this).addClass(settings.labelledClass);
-
- });
-};
\ No newline at end of file