给日期控件赋值不了问题。

js,给日期控件赋值不了问题。

FQC批次合格率.zip

最终版本:

FQC批次合格率.zip

FineReport 指间沙 发布于 2023-3-6 16:04 (编辑于 2023-3-7 10:30)
1min目标场景问卷 立即参与
回答问题
悬赏:5 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
CD20160914Lv8专家互助
发布于2023-3-6 16:32(编辑于 2023-3-7 09:47)

debugger

function getNextDay(d,n) {

        d = new Date(d);

        d = +d + n * 1000 * 60 * 60 * 24;

        d = new Date(d);

        return d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate();

}

var year = this.options.form.getWidgetByName("year").getValue();     

var week = this.options.form.getWidgetByName("week").getValue();   

var stime;

var etime;

var firsttime = year + "-01-01";

var jsz = 0;

var firdate = new Date(firsttime);

var firstday = firdate.getDay();

var firstWeekend = 0;//第一周最后一天

if (firstday == 0)

{

  firstWeekend = 1;

}

else

{

  firstWeekend = 8 - firstday;

}

if (week == 1)

{

  stime = firsttime;

  etime = getNextDay(firsttime, firstWeekend - 1);

}

else

{

  jsz = (week - 2) * 7;

  stime = getNextDay(firsttime, firstWeekend + jsz);

  etime = getNextDay(firsttime, firstWeekend + jsz + 6);

}

if (week == 53)

{

  etime = year + "-12-31";

var stime = new Date(stime); 

var etime = new Date(etime); 

var y = stime.getFullYear();

var m = stime.getMonth() + 1;

m = m < 10 ? '0' + m : m;

var d = stime.getDate();

d = d < 10 ? ('0' + d) : d;

var stime1=y + '-' + m + '-' + d;

var y = etime.getFullYear();

var m = etime.getMonth() + 1;

m = m < 10 ? '0' + m : m;

var d = etime.getDate();

d = d < 10 ? ('0' + d) : d;

var etime=y + '-' + m + '-' + d;

var aa = this.options.form.getWidgetByName("ksrq");

aa.setValue(stime1);

var bb = this.options.form.getWidgetByName("jsrq");

bb.setValue(etime);

image.png

  • 指间沙 指间沙(提问者) 转成2022-03-05这种的也不行
    2023-03-06 16:42 
  • CD20160914 CD20160914 回复 指间沙(提问者) 我只是转换成这个格式这样赋值是可以的。在你的文件上面!你先打印出来你得到的结果是什么格式
    2023-03-06 16:44 
  • 指间沙 指间沙(提问者) 回复 CD20160914 我这边有做了一个格式化的处理,但是也是不行。
    2023-03-06 17:53 
  • CD20160914 CD20160914 回复 指间沙(提问者) 你文字说清楚你的需求吧
    2023-03-06 17:56 
  • 指间沙 指间沙(提问者) 回复 CD20160914 已经更新,初始化的时候,通过年份与周,获取周的开始日期跟结束日期。日期有获取到,就是赋值到控件的时候赋值不了。
    2023-03-07 09:18 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-3-6 16:10

你赋值的JS在哪 没找到

最佳回答
0
snrtuemcLv8专家互助
发布于2023-3-7 09:31

初始化事件,需要加延时,然后延时里面的this替换下

例如,你的第一个初始化事件,我修改如下

debugger;

function getNextDay(d,n) {

        d = new Date(d);

        d = +d + n * 1000 * 60 * 60 * 24;

        d = new Date(d);

        return d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate();

}

var th=this;

setTimeout(function() {

var year = th.options.form.getWidgetByName("year").getValue();     

var week = th.options.form.getWidgetByName("week").getValue();   

var stime;

var etime;

var firsttime = year + "-1-1";

var jsz = 0;

var firdate = new Date(firsttime);

var firstday = firdate.getDay();

var firstWeekend = 0;//第一周最后一天

if (firstday == 0)

{

  firstWeekend = 1;

}

else

{

  firstWeekend = 8 - firstday;

}

if (week == 1)

{

  stime = firsttime;

  etime = getNextDay(firsttime, firstWeekend - 1 - 2);

}

else

{

  jsz = (week - 2) * 7;

  stime = getNextDay(firsttime, firstWeekend + jsz);

  etime = getNextDay(firsttime, firstWeekend + jsz + 6 - 2);

}

if (week == 53)

{

  etime = year + "-12-31";

}

var ystime = stime.substring(5,stime.length);

ystime = ystime.replace("-", ".");

var yetime = etime.substring(5,etime.length);

yetime = yetime.replace("-", ".");

th.options.form.getWidgetByName("sj").setValue(ystime+'-'+yetime);

//_g().getWidgetByName("sj").setValue(ystime+'-'+yetime); 

}, 800);

============

效果

赋值成功了

image.png

  • 指间沙 指间沙(提问者) 这个本来就能赋值,我要赋值的是开始日期跟结束日期。
    2023-03-07 09:33 
  • 2关注人数
  • 779浏览人数
  • 最后回答于:2023-3-7 10:30
    请选择关闭问题的原因
    确定 取消
    返回顶部