diff --git a/app/views/layouts/_javascript.html.erb b/app/views/layouts/_javascript.html.erb index 60ce783..0afccf0 100644 --- a/app/views/layouts/_javascript.html.erb +++ b/app/views/layouts/_javascript.html.erb @@ -2,7 +2,7 @@ 'jquery-2.1.1.min', 'jquery-migrate-1.2.1', 'jquery.noconflict.js', 'jquery.cycle.all.min.js', 'thickbox.js', 'lightbox', 'colorbox', 'jquery-ui-1.10.4/js/jquery-ui-1.10.4.min', 'jquery.scrollTo', 'jquery.form.js', 'jquery-validation/jquery.validate', -'jquery.cookie', 'jquery.ba-bbq.min.js', 'reflection', 'jquery.tokeninput', 'jquery.typewatch', +'jquery.cookie', 'jquery.ba-bbq.min.js', 'reflection', 'jquery.tokeninput', 'jquery.typewatch','jquery.textchange', 'add-and-join', 'report-abuse', 'catalog', 'manage-products', 'autogrow', 'select-or-die/_src/selectordie', 'jquery-timepicker-addon/dist/jquery-ui-timepicker-addon', 'application.js', 'rails.js', :cache => 'cache/application' %> diff --git a/public/javascripts/jquery.textchange.js b/public/javascripts/jquery.textchange.js new file mode 100644 index 0000000..66a07fc --- /dev/null +++ b/public/javascripts/jquery.textchange.js @@ -0,0 +1,76 @@ +/*! + * jQuery TextChange Plugin + * http://www.zurb.com/playground/jquery-text-change-custom-event + * + * Copyright 2010, ZURB + * Released under the MIT License + */ +(function ($) { + + $.event.special.textchange = { + + setup: function (data, namespaces) { + $(this).data('lastValue', this.contentEditable === 'true' ? $(this).html() : $(this).val()); + $(this).bind('keyup.textchange', $.event.special.textchange.handler); + $(this).bind('cut.textchange paste.textchange input.textchange', $.event.special.textchange.delayedHandler); + }, + + teardown: function (namespaces) { + $(this).unbind('.textchange'); + }, + + handler: function (event) { + $.event.special.textchange.triggerIfChanged($(this)); + }, + + delayedHandler: function (event) { + var element = $(this); + setTimeout(function () { + $.event.special.textchange.triggerIfChanged(element); + }, 25); + }, + + triggerIfChanged: function (element) { + var current = element[0].contentEditable === 'true' ? element.html() : element.val(); + if (current !== element.data('lastValue')) { + element.trigger('textchange', [element.data('lastValue')]); + element.data('lastValue', current); + } + } + }; + + $.event.special.hastext = { + + setup: function (data, namespaces) { + $(this).bind('textchange', $.event.special.hastext.handler); + }, + + teardown: function (namespaces) { + $(this).unbind('textchange', $.event.special.hastext.handler); + }, + + handler: function (event, lastValue) { + if ((lastValue === '') && lastValue !== $(this).val()) { + $(this).trigger('hastext'); + } + } + }; + + $.event.special.notext = { + + setup: function (data, namespaces) { + $(this).bind('textchange', $.event.special.notext.handler); + }, + + teardown: function (namespaces) { + $(this).unbind('textchange', $.event.special.notext.handler); + }, + + handler: function (event, lastValue) { + if ($(this).val() === '' && $(this).val() !== lastValue) { + $(this).trigger('notext'); + } + } + }; + +})(jQuery); \ No newline at end of file -- libgit2 0.21.2