diff options
author | Craig Andrews <candrews@integralblue.com> | 2010-04-22 17:57:57 -0400 |
---|---|---|
committer | Craig Andrews <candrews@integralblue.com> | 2010-04-22 18:04:03 -0400 |
commit | 809e597841d1337b641784eee21d5e9b5dc297e1 (patch) | |
tree | 62fc427b73688cf4f91c116aba58f0702def7cbc /plugins | |
parent | 1b561065b0ff8d7082d8da49750a4bc99a4830e2 (diff) |
Only shorten after the user presses space, or following a paste operation
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/ClientSideShorten/shorten.js | 75 |
1 files changed, 44 insertions, 31 deletions
diff --git a/plugins/ClientSideShorten/shorten.js b/plugins/ClientSideShorten/shorten.js index 8e0721756..b3a614633 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(); } } }); - }); -}); + } +})(); |