rhymix/common/js/plugins/watchinput/jquery.watchinput.js
ngleader dbc18a4f99 change author
git-svn-id: http://xe-core.googlecode.com/svn/branches/maserati@13180 201d5d3c-b55e-5fd7-737f-ddc643e51545
2013-11-07 02:42:42 +00:00

61 lines
1.1 KiB
JavaScript

/**
* @brief Watch Input box
* @author NAVER (developers@xpresseingine.com)
**/
(function($){
var class_name = '_watch_input';
$.fn.watch_input = function(settings)
{
if (this.length == 0) return false;
if (this.length > 1) {
this.each(function(){ $(this).watch_input(settings) });
return true;
}
if (!$.isFunction(settings.oninput)) return false;
if (this.hasClass(class_name)) return false;
this[0].__wi_oninput = settings.oninput;
this.addClass(class_name).keydown(_onkeydown).focus(_onfocus).blur(_onblur);
return this;
};
var timer = null, val = '', ie=$.browser.msie;
function _onkeydown(event)
{
if ($(this).val() != val) {
val = $(this).val();
this.__wi_oninput();
}
}
function _onfocus(event)
{
var self = $(this);
val = self.val();
if (ie) return true;
(function fn() {
if ( (self.val() != val) && $.isFunction(self[0].__wi_oninput) ) {
val = self.val();
self[0].__wi_oninput();
}
timer = setTimeout(arguments.callee, 100);
})();
}
function _onblur(event)
{
val = '';
if (!ie && timer) {
clearTimeout(timer);
timer = null;
}
}
})(jQuery);