/** * yvanui.yvdate.js * @author luoyifan * 2019-07-17 12:03:00 */ 'use strict'; (function ($) { function init(target) { var $dom = $(target); var state = $.data($dom.parent()[0], 'yvdate'); var option = state.options; $dom.jqxInput({ height: option.height, width: option.width, }); $dom.addClass('yvgrid-yvdate'); $dom.on('mousemove', function (event) { var $me = $(this); var width = $me.outerWidth(); if (width - event.offsetX < 23) { //查询按钮 $me.removeClass('yvgrid-searchbox-hilight1'); $me.addClass('yvgrid-searchbox-hilight2'); } else { $me.removeClass('yvgrid-searchbox-hilight1'); $me.removeClass('yvgrid-searchbox-hilight2'); } }); $dom.on('mouseout', function (event) { var $me = $(this); $me.removeClass('yvgrid-searchbox-hilight1'); $me.removeClass('yvgrid-searchbox-hilight2'); }); var dateOpt = { singleDatePicker: true, autoApply: true, autoUpdateInput: false, showDropdowns: true, locale: { format: "YYYY-MM-DD", separator: " - ", daysOfWeek: ["日", "一", "二", "三", "四", "五", "六"], monthNames: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], direction: "ltr", applyLabel: "确定", cancelLabel: "取消", fromLabel: "从", toLabel: "至", customRangeLabel: "Custom", firstDay: 1 }, showCustomRangeLabel: false, //startDate: "07/11/2019", //endDate: "07/17/2019", opens: "left" }; if (option.min) { $.extend(dateOpt, { startDate: option.min, minDate: option.min }); } if (option.max) { $.extend(dateOpt, { endDate: option.max, maxDate: option.max }); } $dom.daterangepicker(dateOpt, function (start, end, label) { var value = start.format('YYYY-MM-DD'); onChange.call($dom[0], value); }); $dom.on("input propertychange", function (event) { onChange.call(this, this.value); }); }//end function onChange(value) { if (value) { //如果有值,非空,需要做合法性判断 if (!/^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/.test(value)) { return; } var vt = moment(value); if (isNaN(vt.unix())) { return; } //格式合法,可以触发改变 value = vt.format('YYYY-MM-DD'); } if ($(this).parent().length <= 0) { //编辑框已经消失 return; } var state = $.data($(this).parent()[0], 'yvdate'); var option = state.options; this.value = value; if ($.type(option.onChange) === 'function') { option.onChange.call(this, this.value); } } $.fn.yvdate = function (options, param) { if (typeof options == 'string') { var method = $.fn.yvdate.methods[options]; if (method) { var args = [this]; for (var i = 1; i < arguments.length; i++) { args.push(arguments[i]); } return method.apply(this, args); } else { console.error('not found method:' + options); } } options = options || {}; return this.each(function () { var state = $.data($(this).parent()[0], 'yvdate'); if (state) { $.extend(state.options, options); } else { $.data($(this).parent()[0], 'yvdate', { options: $.extend({}, $.fn.yvdate.defaults, options) }); } init(this); }); }; $.fn.yvdate.methods = { getValue: function ($dom) { return $dom.val(); }, setValue: function ($dom, value) { return $dom.val(value); }, focus: function ($dom) { setTimeout(function () { $dom.focus(); }, 10); } }; $.fn.power.defaults.xtype.yvdate = function ($targetDOM, option, context) { if (option.name) { var $dom = $("").appendTo($targetDOM); } else { $dom = $("").appendTo($targetDOM); } return $dom.yvdate(option, context); }; $.fn.yvdate.defaults = {}; })(jQuery);