$.fn.extend({

	/**
	 * 限定文本框只能输入数字
	 */
	numberOnlyInput: function () {
		return this.bind('keypress', function (ev) {
			var naviKeycodes = [ 36, 35, 37, 39, 8, 46 ];
			return ($.inArray(ev.keyCode, naviKeycodes) > 0) ||
				(ev.keyCode >= 48 && ev.keyCode <= 57) ||
				(ev.keyCode >= 96 && ev.keyCode <= 105) ||
				(ev.charCode >= 48 && ev.charCode <= 57);
		});
	},

	/**
	 * 在文本框左右增加一对 -/+ 按钮来调整文本框中填写的数字
	 */
	plusMinusInput: (function () {

		var plus = function (inpv, inc, min, max) {
			var v = isNaN(inpv.val()) ? min : Number(inpv.val());
			v = Math.min(max, Math.max(min, v + inc));
			inpv.val(v);
		};
	
		return function (opts) {
		
			opts = opts || {};
			var min = (opts.min == undefined) ? -Number.MAX_VALUE : opts.min;
			var max = (opts.max == undefined) ? Number.MAX_VALUE : opts.max;
			
			return this.numberOnlyInput().each(function () {
				var inpv = $(this);
				var inpm = $('<input type="button" value="-" class="minus" />')
					.insertBefore(inpv).click(function () { plus(inpv, -1, min, max); inpv.trigger('change'); });
				var inpp = $('<input type="button" value="+" class="plus" />')
					.insertAfter(inpv).click(function () { plus(inpv, 1, min, max); inpv.trigger('change'); });
			});
			
		};
		
	}) ()
	
});