鼠标滚轮大家平时都很常用,但是FR本身用滚轮的操作很少,其实有些操作加点滚轮效果还是非常好的,比如文本框和日期控件。今天就给大家介绍下该如何做能实现。
1.控件在参数面板的情况
在参数面板比较好办,结构比填报页面简单多了,大家只需要在加载结束事件写入以下JS就可以实现。
文本框控件如下
- $('input[name=MM]').bind('mousewheel', function(event) {
- if(event.originalEvent.wheelDelta>0)
- {
- var k=contentPane.parameterEl.getWidgetByName("mm").getValue();
- var kk=parseInt(k)+1;
- contentPane.parameterEl.getWidgetByName("mm").setValue(kk);
- }
- else
- {
- var k=contentPane.parameterEl.getWidgetByName("mm").getValue();
- var kk=parseInt(k)-1;
- contentPane.parameterEl.getWidgetByName("mm").setValue(kk);
- }
- });
复制代码
下面是日期控件的js
- function addDate(date, days) {
- if (days == undefined || days == '') {
- days = 1;
- }
- var date = new Date(date);
- date.setDate(date.getDate() + days);
- var month = date.getMonth() + 1;
- var day = date.getDate();
- return date.getFullYear() + '-' + getFormatDate(month) + '-' + getFormatDate(day);
- }//加减日期的一个函数,参数为日期和天数,可以为负,这里可以用FR内置函数。
- function getFormatDate(arg) {
- if (arg == undefined || arg == '') {
- return '';
- }
- var re = arg + '';
- if (re.length < 2) {
- re = '0' + re;
- }
- return re;
- }//为上面的日期函数服务
- $('div[widgetname=U]>div>input').bind('mousewheel', function(event) {
- if(event.originalEvent.wheelDelta>0)
- {
- var k=contentPane.parameterEl.getWidgetByName("U").getValue();
- //var kk=parseInt(k)+1;
- var kk=addDate(k);
- contentPane.parameterEl.getWidgetByName("U").setValue(kk);
- }
- else
- {
- var k=contentPane.parameterEl.getWidgetByName("U").getValue();
- //var kk=parseInt(k)-1;
- var kk=addDate(k,-1);
- contentPane.parameterEl.getWidgetByName("U").setValue(kk);
- }
- });
复制代码
注意一点,里面的input[name=]这里填写你的控件名,下面的getWidgetByName("U").这里的U也填你的控件名!上面的参数控件实现的是加1的操作,下面的日期控件是实现的多一天少一天的操作,如果要修改,为多天,addDate(k,-1),将-1改为你想要的,比如。3,-3.还有,必须 要有初始值。
2.控件不在参数面板
注意,这种情况,必须是直接显示控件才有效,如果不直接显示控件只有文本框可以写在编辑前事件。日期控件要实现的话比较复杂,这里没有给出这种做法,如果有特别需要可以回帖。
与前面的JS类似有小差别。文本框的如下:
- $('input[name=K]').bind('mousewheel', function(event) {
- if(event.originalEvent.wheelDelta>0)
- {
- var k=contentPane.curLGP.getCellValue("B4");
- var kk=parseInt(k)+1;
- contentPane.setCellValue("B4",null,kk);
- }
- else
- {
- var k=contentPane.curLGP.getCellValue("B4");
- var kk=parseInt(k)-1;
- contentPane.setCellValue("B4",null,kk);
- }
复制代码 这里K是控件名,B4是单元格。注意不要填混了!
下面是日期控件的
- function addDate(date, days) {
- if (days == undefined || days == '') {
- days = 1;
- }
- var date = new Date(date);
- date.setDate(date.getDate() + days);
- var month = date.getMonth() + 1;
- var day = date.getDate();
- return date.getFullYear() + '-' + getFormatDate(month) + '-' + getFormatDate(day);
- }
- function getFormatDate(arg) {
- if (arg == undefined || arg == '') {
- return '';
- }
- var re = arg + '';
- if (re.length < 2) {
- re = '0' + re;
- }
- return re;
- }//日期计算函数,同上面一样
- $('div[widgetname=KK]>div>input').bind('mousewheel', function(event) {
- if(event.originalEvent.wheelDelta>0)
- {
- var k=contentPane.curLGP.getCellValue("D4");
- //var kk=parseInt(k)+1;
- var kk=addDate(k);
- contentPane.setCellValue("D4",null,kk);
- }
- else
- {
- var k=contentPane.curLGP.getCellValue("D4");
- //var kk=parseInt(k)-1;
- var kk=addDate(k,-1);
- contentPane.setCellValue("D4",null,kk);
- }
-
-
- });
复制代码 这里同样,KK是控件名,D4是单元格。还有如果你是写到加载结束事件,那么前面的日期计算函数可以不用再写一次。同样必须要有初始值。
不在参数面板还有一点很关键,当操作对象是日期控件的时候,日期控件不能是第一个被操作的对象,否则可能不生效,如果遇到不生效的情况,那么就是你第一个点的是日期控件,这个bug和FR的本身数据类型有关,解决的话,有点麻烦。
介于上面可能有同学理解的不是很清楚,这里 有模版。
WorkBook249.cpt
(8.64 KB, 下载次数: 2, 售价: 150 个F豆)
编辑于 2018-1-23 16:24
|