From: Craig Andrews Date: Thu, 22 Apr 2010 21:57:57 +0000 (-0400) Subject: Only shorten after the user presses space, or following a paste operation X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=809e597841d1337b641784eee21d5e9b5dc297e1;p=quix0rs-gnu-social.git Only shorten after the user presses space, or following a paste operation --- diff --git a/plugins/ClientSideShorten/shorten.js b/plugins/ClientSideShorten/shorten.js index 8e07217563..b3a6146339 100644 --- a/plugins/ClientSideShorten/shorten.js +++ b/plugins/ClientSideShorten/shorten.js @@ -1,46 +1,59 @@ -// smart(x) from Paul Irish -// http://paulirish.com/2009/throttled-smartresize-jquery-event-handler/ +//wrap everything in a self-executing anonymous function to avoid conflicts +(function(){ -(function($,sr){ + // smart(x) from Paul Irish + // http://paulirish.com/2009/throttled-smartresize-jquery-event-handler/ - // debouncing function from John Hann - // http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/ - var debounce = function (func, threshold, execAsap) { - var timeout; + (function($,sr){ - return function debounced () { - var obj = this, args = arguments; - function delayed () { - if (!execAsap) + // debouncing function from John Hann + // http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/ + var debounce = function (func, threshold, execAsap) { + var timeout; + + return function debounced () { + var obj = this, args = arguments; + function delayed () { + if (!execAsap) + func.apply(obj, args); + timeout = null; + }; + + if (timeout) + clearTimeout(timeout); + else if (execAsap) func.apply(obj, args); - timeout = null; - }; - if (timeout) - clearTimeout(timeout); - else if (execAsap) - func.apply(obj, args); + timeout = setTimeout(delayed, threshold || 100); + }; + } + jQuery.fn[sr] = function(fn){ return fn ? this.bind('keypress', debounce(fn, 1000)) : this.trigger(sr); }; - timeout = setTimeout(delayed, threshold || 100); - }; - } - jQuery.fn[sr] = function(fn){ return fn ? this.bind('keypress', debounce(fn, 1000)) : this.trigger(sr); }; + })(jQuery,'smartkeypress'); -})(jQuery,'smartkeypress'); + $(document).ready(function(){ + $noticeDataText = $('#'+SN.C.S.NoticeDataText); + $noticeDataText.smartkeypress(function(e){ + if(e.charCode == '32') { + shorten(); + } + }); + $noticeDataText.bind('paste', shorten); + }); -$(document).ready(function(){ - $('#notice_data-text').smartkeypress(function(e){ - var original = $('#notice_data-text').val(); + function shorten() + { + $noticeDataText = $('#'+SN.C.S.NoticeDataText); + var original = $noticeDataText.val(); $.ajax({ url: $('address .url')[0].href+'/plugins/ClientSideShorten/shorten', - data: { text: $('#notice_data-text').val() }, + data: { text: $noticeDataText.val() }, dataType: 'text', success: function(data) { - if(original == $('#notice_data-text').val()) { - $('#notice_data-text').val(data); - $('#notice_data-text').keyup(); + if(original == $noticeDataText.val()) { + $noticeDataText.val(data).keyup(); } } }); - }); -}); + } +})();