Commit afbcb3d186afd4e63c86954f8dc211cfa11b832b
1 parent
54669365
Exists in
master
and in
22 other branches
Beautify html alts and titles automagically
Showing
1 changed file
with
79 additions
and
0 deletions
Show diff stats
public/javascripts/application.js
| @@ -694,3 +694,82 @@ jQuery(function() { | @@ -694,3 +694,82 @@ jQuery(function() { | ||
| 694 | target: "#ajax-form-message-area" | 694 | target: "#ajax-form-message-area" |
| 695 | }) | 695 | }) |
| 696 | }); | 696 | }); |
| 697 | + | ||
| 698 | +/** | ||
| 699 | +* @author Remy Sharp | ||
| 700 | +* @url http://remysharp.com/2007/01/25/jquery-tutorial-text-box-hints/ | ||
| 701 | +*/ | ||
| 702 | + | ||
| 703 | +(function ($) { | ||
| 704 | + | ||
| 705 | +$.fn.hint = function (blurClass) { | ||
| 706 | + if (!blurClass) { | ||
| 707 | + blurClass = 'blur'; | ||
| 708 | + } | ||
| 709 | + | ||
| 710 | + return this.each(function () { | ||
| 711 | + // get jQuery version of 'this' | ||
| 712 | + var $input = $(this), | ||
| 713 | + | ||
| 714 | + // capture the rest of the variable to allow for reuse | ||
| 715 | + title = $input.attr('title'), | ||
| 716 | + $form = $(this.form), | ||
| 717 | + $win = $(window); | ||
| 718 | + | ||
| 719 | + function remove() { | ||
| 720 | + if ($input.val() === title && $input.hasClass(blurClass)) { | ||
| 721 | + $input.val('').removeClass(blurClass); | ||
| 722 | + } | ||
| 723 | + } | ||
| 724 | + | ||
| 725 | + // only apply logic if the element has the attribute | ||
| 726 | + if (title) { | ||
| 727 | + // on blur, set value to title attr if text is blank | ||
| 728 | + $input.blur(function () { | ||
| 729 | + if (this.value === '') { | ||
| 730 | + $input.val(title).addClass(blurClass); | ||
| 731 | + } | ||
| 732 | + }).focus(remove).blur(); // now change all inputs to title | ||
| 733 | + | ||
| 734 | + // clear the pre-defined text when form is submitted | ||
| 735 | + $form.submit(remove); | ||
| 736 | + $win.unload(remove); // handles Firefox's autocomplete | ||
| 737 | + } | ||
| 738 | + }); | ||
| 739 | +}; | ||
| 740 | + | ||
| 741 | +})(jQuery); | ||
| 742 | + | ||
| 743 | +var altBeautify = jQuery('<div id="alt-beautify" style="display:none; position: absolute"/>') | ||
| 744 | + .append('<div class="alt-beautify-content"/>') | ||
| 745 | + .append('<div class="alt-beautify-arrow-border"/>') | ||
| 746 | + .append('<div class="alt-beautify-arrow"/>'); | ||
| 747 | +var altTarget; | ||
| 748 | +jQuery(document).ready(function () { | ||
| 749 | + jQuery('body').append(altBeautify); | ||
| 750 | +}); | ||
| 751 | + | ||
| 752 | +function altTimeout() { | ||
| 753 | + if (!altTarget) | ||
| 754 | + return; | ||
| 755 | + altBeautify.css('top', jQuery(altTarget).offset().top + jQuery(altTarget).height()); | ||
| 756 | + altBeautify.css('left', jQuery(altTarget).offset().left); | ||
| 757 | + altBeautify.find('.alt-beautify-content').html(jQuery(altTarget).attr('alt-beautify')); | ||
| 758 | + altBeautify.show(); | ||
| 759 | +} | ||
| 760 | + | ||
| 761 | +jQuery('a[title]').live('mouseover', function (e) { | ||
| 762 | + alt = jQuery(this).attr('title'); | ||
| 763 | + if (alt != '') { | ||
| 764 | + jQuery(this).attr('alt-beautify', alt); | ||
| 765 | + jQuery(this).attr('title', ''); | ||
| 766 | + } | ||
| 767 | + | ||
| 768 | + altTarget = this; | ||
| 769 | + setTimeout("altTimeout()", 300); | ||
| 770 | +}); | ||
| 771 | +jQuery('a[title]').live('mouseout', function (e) { | ||
| 772 | + altTarget = null; | ||
| 773 | + altBeautify.hide(); | ||
| 774 | +}); | ||
| 775 | + |