123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378 |
- /**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerSpinner = function ()
- {
- return $.ligerui.run.call(this, "ligerSpinner", arguments);
- };
- $.fn.ligerGetSpinnerManager = function ()
- {
- return $.ligerui.run.call(this, "ligerGetSpinnerManager", arguments);
- };
- $.ligerDefaults.Spinner = {
- type: 'float', //类型 float:浮点数 int:整数 time:时间
- isNegative: true, //是否负数
- decimalplace: 2, //小数位 type=float时起作用
- step: 0.1, //每次增加的值
- interval: 50, //间隔,毫秒
- onChangeValue: false, //改变值事件
- minValue: null, //最小值
- maxValue: null, //最大值
- disabled: false
- };
- $.ligerMethos.Spinner = {};
- $.ligerui.controls.Spinner = function (element, options)
- {
- $.ligerui.controls.Spinner.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.Spinner.ligerExtend($.ligerui.controls.Input, {
- __getType: function ()
- {
- return 'Spinner';
- },
- __idPrev: function ()
- {
- return 'Spinner';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.Spinner;
- },
- _init: function ()
- {
- $.ligerui.controls.Spinner.base._init.call(this);
- var p = this.options;
- if (p.type == 'float')
- {
- p.step = 0.1;
- p.interval = 50;
- } else if (p.type == 'int')
- {
- p.step = 1;
- p.interval = 100;
- } else if (p.type == 'time')
- {
- p.step = 1;
- p.interval = 100;
- }
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.interval = null;
- g.inputText = null;
- g.value = null;
- g.textFieldID = "";
- if (this.element.tagName.toLowerCase() == "input" && this.element.type && this.element.type == "text")
- {
- g.inputText = $(this.element);
- if (this.element.id)
- g.textFieldID = this.element.id;
- }
- else
- {
- g.inputText = $('<input type="text"/>');
- g.inputText.appendTo($(this.element));
- }
- if (g.textFieldID == "" && p.textFieldID)
- g.textFieldID = p.textFieldID;
- g.link = $('<div class="l-trigger"><div class="l-spinner-up"><div class="l-spinner-icon"></div></div><div class="l-spinner-split"></div><div class="l-spinner-down"><div class="l-spinner-icon"></div></div></div>');
- g.wrapper = g.inputText.wrap('<div class="l-text"></div>').parent();
- g.wrapper.append('<div class="l-text-l"></div><div class="l-text-r"></div>');
- g.wrapper.append(g.link).after(g.selectBox).after(g.valueField);
- g.link.up = $(".l-spinner-up", g.link);
- g.link.down = $(".l-spinner-down", g.link);
- g.inputText.addClass("l-text-field");
- if (p.disabled)
- {
- g.wrapper.addClass("l-text-disabled");
- }
- //初始化
- if (!g._isVerify(g.inputText.val()))
- {
- g.value = g._getDefaultValue();
- g.inputText.val(g.value);
- }
- //事件
- g.link.up.hover(function ()
- {
- if (!p.disabled)
- $(this).addClass("l-spinner-up-over");
- }, function ()
- {
- clearInterval(g.interval);
- $(document).unbind("selectstart.spinner");
- $(this).removeClass("l-spinner-up-over");
- }).mousedown(function ()
- {
- if (!p.disabled)
- {
- g._uping.call(g);
- g.interval = setInterval(function ()
- {
- g._uping.call(g);
- }, p.interval);
- $(document).bind("selectstart.spinner", function () { return false; });
- }
- }).mouseup(function ()
- {
- clearInterval(g.interval);
- g.inputText.trigger("change").focus();
- $(document).unbind("selectstart.spinner");
- });
- g.link.down.hover(function ()
- {
- if (!p.disabled)
- $(this).addClass("l-spinner-down-over");
- }, function ()
- {
- clearInterval(g.interval);
- $(document).unbind("selectstart.spinner");
- $(this).removeClass("l-spinner-down-over");
- }).mousedown(function ()
- {
- if (!p.disabled)
- {
- g.interval = setInterval(function ()
- {
- g._downing.call(g);
- }, p.interval);
- $(document).bind("selectstart.spinner", function () { return false; });
- }
- }).mouseup(function ()
- {
- clearInterval(g.interval);
- g.inputText.trigger("change").focus();
- $(document).unbind("selectstart.spinner");
- });
- g.inputText.change(function ()
- {
- var value = g.inputText.val();
- g.value = g._getVerifyValue(value);
- g.trigger('changeValue', [g.value]);
- g.inputText.val(g.value);
- }).blur(function ()
- {
- g.wrapper.removeClass("l-text-focus");
- }).focus(function ()
- {
- g.wrapper.addClass("l-text-focus");
- });
- g.wrapper.hover(function ()
- {
- if (!p.disabled)
- g.wrapper.addClass("l-text-over");
- }, function ()
- {
- g.wrapper.removeClass("l-text-over");
- });
- g.set(p);
- },
- _setWidth: function (value)
- {
- var g = this;
- if (value > 20)
- {
- g.wrapper.css({ width: value });
- g.inputText.css({ width: value - 20 });
- }
- },
- _setHeight: function (value)
- {
- var g = this;
- if (value > 10)
- {
- g.wrapper.height(value);
- g.inputText.height(value - 2);
- g.link.height(value - 4);
- }
- },
- _setDisabled: function (value)
- {
- if (value)
- {
- this.wrapper.addClass("l-text-disabled");
- }
- else
- {
- this.wrapper.removeClass("l-text-disabled");
- }
- },
- setValue: function (value)
- {
- this.inputText.val(value);
- },
- getValue: function ()
- {
- return this.inputText.val();
- },
- _round: function (v, e)
- {
- var g = this, p = this.options;
- var t = 1;
- for (; e > 0; t *= 10, e--);
- for (; e < 0; t /= 10, e++);
- return Math.round(v * t) / t;
- },
- _isInt: function (str)
- {
- var g = this, p = this.options;
- var strP = p.isNegative ? /^-?\d+$/ : /^\d+$/;
- if (!strP.test(str)) return false;
- if (parseFloat(str) != str) return false;
- return true;
- },
- _isFloat: function (str)
- {
- var g = this, p = this.options;
- var strP = p.isNegative ? /^-?\d+(\.\d+)?$/ : /^\d+(\.\d+)?$/;
- if (!strP.test(str)) return false;
- if (parseFloat(str) != str) return false;
- return true;
- },
- _isTime: function (str)
- {
- var g = this, p = this.options;
- var a = str.match(/^(\d{1,2}):(\d{1,2})$/);
- if (a == null) return false;
- if (a[1] > 24 || a[2] > 60) return false;
- return true;
- },
- _isVerify: function (str)
- {
- var g = this, p = this.options;
- if (p.type == 'float')
- {
- if (!g._isFloat(str)) return false;
- var value = parseFloat(str);
- if (p.minValue != undefined && p.minValue > value) return false;
- if (p.maxValue != undefined && p.maxValue < value) return false;
- return true;
- } else if (p.type == 'int')
- {
- if (!g._isInt(str)) return false;
- var value = parseInt(str);
- if (p.minValue != undefined && p.minValue > value) return false;
- if (p.maxValue != undefined && p.maxValue < value) return false;
- return true;
- } else if (p.type == 'time')
- {
- return g._isTime(str);
- }
- return false;
- },
- _getVerifyValue: function (value)
- {
- var g = this, p = this.options;
- var newvalue = null;
- if (p.type == 'float')
- {
- newvalue = g._round(value, p.decimalplace);
- } else if (p.type == 'int')
- {
- newvalue = parseInt(value);
- } else if (p.type == 'time')
- {
- newvalue = value;
- }
- if (!g._isVerify(newvalue))
- {
- return g.value;
- } else
- {
- return newvalue;
- }
- },
- _isOverValue: function (value)
- {
- var g = this, p = this.options;
- if (p.minValue != null && p.minValue > value) return true;
- if (p.maxValue != null && p.maxValue < value) return true;
- return false;
- },
- _getDefaultValue: function ()
- {
- var g = this, p = this.options;
- if (p.type == 'float' || p.type == 'int') { return 0; }
- else if (p.type == 'time') { return "00:00"; }
- },
- _addValue: function (num)
- {
- var g = this, p = this.options;
- var value = g.inputText.val();
- value = parseFloat(value) + num;
- if (g._isOverValue(value)) return;
- g.inputText.val(value);
- g.inputText.trigger("change");
- },
- _addTime: function (minute)
- {
- var g = this, p = this.options;
- var value = g.inputText.val();
- var a = value.match(/^(\d{1,2}):(\d{1,2})$/);
- newminute = parseInt(a[2]) + minute;
- if (newminute < 10) newminute = "0" + newminute;
- value = a[1] + ":" + newminute;
- if (g._isOverValue(value)) return;
- g.inputText.val(value);
- g.inputText.trigger("change");
- },
- _uping: function ()
- {
- var g = this, p = this.options;
- if (p.type == 'float' || p.type == 'int')
- {
- g._addValue(p.step);
- } else if (p.type == 'time')
- {
- g._addTime(p.step);
- }
- },
- _downing: function ()
- {
- var g = this, p = this.options;
- if (p.type == 'float' || p.type == 'int')
- {
- g._addValue(-1 * p.step);
- } else if (p.type == 'time')
- {
- g._addTime(-1 * p.step);
- }
- },
- _isDateTime: function (dateStr)
- {
- var g = this, p = this.options;
- var r = dateStr.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
- if (r == null) return false;
- var d = new Date(r[1], r[3] - 1, r[4]);
- if (d == "NaN") return false;
- return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4]);
- },
- _isLongDateTime: function (dateStr)
- {
- var g = this, p = this.options;
- var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2})$/;
- var r = dateStr.match(reg);
- if (r == null) return false;
- var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6]);
- if (d == "NaN") return false;
- return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4] && d.getHours() == r[5] && d.getMinutes() == r[6]);
- }
- });
- })(jQuery);
|