augustl (owner)

Forks

Revisions

gist: 41961 Download_button fork
public
Public Clone URL: git://gist.github.com/41961.git
Embed All Files: show embed
jquery.inlinelabels.js #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
(function($){
  $.fn.inlineLabels = function(options){
    var self = this; // scope..
    this.labelElements = this.find("input:text, textarea")
 
    var settings = $.extend({
      suffix: '...'
    }, options)
 
    this.labelElements.each(function(i, input){
      var input = $(input)
      var label = input.prev('label')
      var labelText = label.html()
      input.data('labelText', labelText + settings.suffix)
 
      label.remove()
 
      // Firefox leaves the values there on reloads/backs, so we gotta check for the actual text
      // as well as blank fields
      if (input.val() == "" || input.val() == input.data('labelText')) {
        input.val(input.data('labelText'))
        input.addClass('label')
      }
 
      input.focus(function(){
        input.removeClass('label')
        if (input.val() == input.data('labelText')) { input.val('') }
      })
 
      input.blur(function(){
        if (input.val() == "") {
          input.addClass('label')
          input.val(input.data('labelText'))
        }
      })
    })
 
    // Re-adding the labels on ajax requests
    this.ajaxComplete(function(){
      self.labelElements.trigger("blur")
    })
 
    this.submit(function(){
      var form = $(this)
      form.find('input:text, textarea').each(function(i, input){
        var input = $(input)
        if (input.val() == input.data('labelText')) {
          input.val('')
        }
      })
    })
  }
})(jQuery)