extjs 月份选择控件_Ext DateField控件 - 只选择年月

本文介绍了如何使用ExtJS创建一个仅允许用户选择年份和月份的DateField控件。通过自定义MonthPickerPlugin,扩展了Ext.ux组件,实现了点击触发器后显示月份选择菜单,并在选择完成后自动填充日期为当月第一天。同时,提供了点击取消和确定按钮的处理逻辑,确保用户交互的流畅性。
摘要由CSDN通过智能技术生成

效果

HTML代码:

MonthPicker

JavaScript代码:

//MonthPickerPlugin.js文件,年月选择的关键代码

Ext.ux.MonthPickerPlugin = function() {

var picker;

var oldDateDefaults;

this.init = function(pk) {

picker = pk;

picker.onTriggerClick = picker.onTriggerClick.createSequence(onClick);

picker.getValue = picker.getValue.createInterceptor(setDefaultMonthDay).createSequence(restoreDefaultMonthDay);

picker.beforeBlur = picker.beforeBlur.createInterceptor(setDefaultMonthDay).createSequence(restoreDefaultMonthDay);

};

function setDefaultMonthDay() {

oldDateDefaults = Date.defaults.d;

Date.defaults.d = 1;

return true;

}

function restoreDefaultMonthDay(ret) {

Date.defaults.d = oldDateDefaults;

return ret;

}

function onClick(e, el, opt) {

var p = picker.menu.picker;

p.activeDate = p.activeDate.getFirstDateOfMonth();

if (p.value) {

p.value = p.value.getFirstDateOfMonth();

}

p.showMonthPicker();

if (!p.disabled) {

p.monthPicker.stopFx();

p.monthPicker.show();

// if you want to click,you can the dblclick event change click

p.mun(p.monthPicker, 'click', p.onMonthClick, p);

p.mun(p.monthPicker, 'click', p.onMonthDblClick, p);

p.onMonthClick = p.onMonthClick.createSequence(pickerClick);

p.onMonthDblClick = p.onMonthDblClick.createSequence(pickerDblclick);

p.mon(p.monthPicker, 'click', p.onMonthClick, p);

p.mon(p.monthPicker, 'click', p.onMonthDblClick, p);

}

}

function pickerClick(e, t) {

var el = new Ext.Element(t);

if (el.is('button.x-date-mp-cancel')) {

picker.menu.hide();

} else if(el.is('button.x-date-mp-ok')) {

var p = picker.menu.picker;

p.setValue(p.activeDate);

p.fireEvent('select', p, p.value);

}

}

function pickerDblclick(e, t) {

var el = new Ext.Element(t);

if (el.parent()

&& (el.parent().is('td.x-date-mp-month')

|| el.parent().is('td.x-date-mp-year'))) {

var p = picker.menu.picker;

p.setValue(p.activeDate);

p.fireEvent('select', p, p.value);

}

}

};

Ext.preg('monthPickerPlugin', Ext.ux.MonthPickerPlugin);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值