123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- /**
- * 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 = $("<input name='" + option.name + "' xtype='yvdate' />").appendTo($targetDOM);
- } else {
- $dom = $("<input xtype='yvdate' />").appendTo($targetDOM);
- }
- return $dom.yvdate(option, context);
- };
- $.fn.yvdate.defaults = {};
- })(jQuery);
|