You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 lines
3.3 KiB

  1. /* ******************************
  2. Default Text (Form)
  3. Author: Jack Lukic
  4. Notes: First Commit April 08, 2012
  5. Refactored Aug 13, 2012
  6. allows you to set a default text value which will be added and removed on form field focus
  7. ****************************** */
  8. ;(function ( $, window, document, undefined ) {
  9. $.fn.defaultText = function(parameters) {
  10. var
  11. // overload for shorthand to default value
  12. settings = (typeof parameters == 'string')
  13. ? $.extend({}, $.fn.defaultText.settings, { defaultValue: parameters })
  14. : $.extend(true, {}, $.fn.defaultText.settings, parameters)
  15. ;
  16. // overload function
  17. if(typeof parameters == 'string') {
  18. parameters = { defaultValue: parameters };
  19. }
  20. $.extend(settings, parameters);
  21. $(this)
  22. .each(function() {
  23. var
  24. $element = $(this),
  25. module = {
  26. checkDefault: function() {
  27. if($element.val().toLowerCase() != settings.defaultValue.toLowerCase()) {
  28. $element.addClass(settings.filledClass);
  29. }
  30. },
  31. placeholder: {
  32. add: function(){
  33. if( $element.filter(settings.disabledClassList).size() === 0 ) {
  34. if( $element.val() == settings.replaceValue ) {
  35. if(settings.alwaysReplace) {
  36. $element
  37. .removeClass(settings.filledClass)
  38. .val($element.attr('last'))
  39. .removeAttr('last')
  40. ;
  41. }
  42. else {
  43. $element
  44. .removeClass(settings.filledClass)
  45. .val(settings.defaultValue)
  46. ;
  47. }
  48. }
  49. else {
  50. $element
  51. .addClass(settings.filledClass)
  52. ;
  53. }
  54. }
  55. },
  56. remove: function() {
  57. if( $element.filter(settings.disabledClassList).size() === 0 ) {
  58. if(settings.alwaysReplace) {
  59. $element
  60. .attr('last', $element.val())
  61. .val(settings.replaceValue)
  62. ;
  63. }
  64. else {
  65. if( $element.val().toLowerCase() == settings.defaultValue.toLowerCase() ) {
  66. $element
  67. .val(settings.replaceValue)
  68. ;
  69. }
  70. }
  71. }
  72. }
  73. }
  74. }
  75. ;
  76. if(settings.defaultValue == 'auto') {
  77. settings.defaultValue = $(this).val();
  78. }
  79. $element
  80. .on('focus', module.placeholder.remove)
  81. .on('blur', module.placeholder.add)
  82. ;
  83. // check for user value on load
  84. module.checkDefault();
  85. })
  86. ;
  87. return this;
  88. };
  89. $.fn.defaultText.settings = {
  90. defaultValue : 'auto',
  91. replaceValue : '',
  92. alwaysReplace : false,
  93. disabledClassList : '.readonly, .disabled',
  94. filledClass : 'filled'
  95. };
  96. })( jQuery, window , document );