public
Last active — forked from mkelly12/jquery.textchange.js

  • Download Gist
jquery.textchange.js
JavaScript
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
(function ($) {
$.event.special.textchange = {
setup: function (data, namespaces) {
$(this).bind('keyup', $.event.special.textchange.handler);
$(this).bind('cut paste input', $.event.special.textchange.delayedHandler);
},
teardown: function (namespaces) {
$(this).unbind('keyup', $.event.special.textchange.keyuphandler);
$(this).unbind('cut', $.event.special.textchange.cuthandler);
},
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) {
if (element.val() !== element.data('lastValue')) {
element.trigger('textchange', element.data('lastValue'));
element.data('lastValue', element.val());
}
}
};
$.event.special.hastext = {
setup: function (data, namespaces) {
var self = this;
$(this).bind('textchange', $.event.special.hastext.handler);
},
teardown: function (namespaces) {
$(this).unbind('textchange', $.event.special.hastext.handler);
},
handler: function (event, lastValue) {
$.event.special.hastext.check($(this), lastValue);
},
check: function (element, lastValue) {
if ((lastValue === '' || lastValue === undefined) && lastValue !== element.val()) {
element.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);

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.