填报模板参数面板里的控件,在加载结束事件中如何控制可用或不可用

首先在查询按钮里加了一个点击事件:

var ka = this.options.form.getWidgetByName("ka"); //获取下拉框控件province

if (a==1) {

ka.setEnable(false);

} else {

ka.setEnable(true);

}

变量a用一个公式判断,这里就不提了。这段代码是好用的。

现在想在模板web属性里面,填报页面加个填报结束的事件。看到说需要用到setTimeout函数,应该怎么写才能实现?

现在写成:

var th = this;

setTimeout(function() {

th.options.form.getWidgetByName("ka");

}, 500);

if (a==1) {

th.setEnable(false);

} else {

th.setEnable(true);

}

这样是不对的,页面显示整个都是有问题的。

FineReport 张洋华松 发布于 2023-2-15 13:10 (编辑于 2023-2-15 13:11)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
snrtuemcLv8专家互助
发布于2023-2-15 13:11(编辑于 2023-2-15 15:07)

延时的话

var th=this;

setTimeout(function() {

var ka = th.options.form.getWidgetByName("ka"); //获取下拉框控件province

if (a==1) {

ka.setEnable(false);

} else {

ka.setEnable(true);

}

},800);

  • 张洋华松 张洋华松(提问者) 用这个代码没有效果。有帖子说:延时函数中不能用 this https://help.fanruan.com/finereport/doc-view-3561.html
    2023-02-15 15:06 
  • snrtuemc snrtuemc 回复 张洋华松(提问者) 对了,可以把this放到延迟函数外边,看修改后的答案
    2023-02-15 15:07 
  • 张洋华松 张洋华松(提问者) 回复 snrtuemc 还是不对, 在var ka这行前面加个alert能弹出窗口。后面加alert就不弹出窗口。 是不是var ka = th.options.form.getWidgetByName(\"ka\"); 这一行还是有问题?
    2023-02-15 15:13 
  • snrtuemc snrtuemc 回复 张洋华松(提问者) 你要把if判断也放到延迟函数中,还有你这个控件是在参数面板把,这样你的代码就不能在web页面加载结束事件,直接写在控件的初始化事件把
    2023-02-15 15:16 
  • 张洋华松 张洋华松(提问者) 回复 snrtuemc 放到控件初始化事件就好用了,非常感谢!
    2023-02-15 15:21 
  • 1关注人数
  • 748浏览人数
  • 最后回答于:2023-2-15 15:07
    请选择关闭问题的原因
    确定 取消
    返回顶部