FineReport中如何用JavaScript解決控件值刷新不及時

我們經常利用按鈕進行一些頁面值的處理工作,但是默認的邏輯造成,每次新填報的值,需要點擊下空白區域或是執行某個其他操作纔可以被正確讀取,那麼我們如何處理呢?

例:當我們用常規取值的時候,雖然B3單元格錄入了值,但是在光標不離開B3的前提下,用JS只獲取到了控制而不是實際的值“2”。

想獲得B3的值,需要在空白處點擊下鼠標,讓文本框的左上角的紅三角出現纔可以。

優化過後則可以將光標強制跳轉到A2單元格,使其獲得光標,進而強制B3單元格刷新值。

wKioL1jItgDgXWodAAH2bAW30u8697.gif

既然任意點擊空白處就可以,那麼我們就用JS來強制跳轉光標實現同樣的功能。

模板製作

模板樣式設計如下,A3和B3單元格添加文本控件,C3單元格爲A3和B3相加值,D3和E3單元格添加按鈕控件:

wKiom1jIthPCM8ORAAAHBricMtc577.png

“直接相加”按鈕的JS

D3控件名稱爲直接相加,添加一個點擊事件

wKioL1jItiCT0lI_AABZRU4ksfw860.png

var B3 = contentPane.curLGP.getCellValue("B3");
var A3 = contentPane.curLGP.getCellValue("A3");
alert("a3的值:"+A3);
alert("b3的值:"+B3);

“優化後”按鈕的JS

E3控件名稱爲優化後,添加一個點擊事件

wKiom1jItjmzhKJsAABdArnqz-8374.png

contentPane.curLGP.selectTDCell("A2");

var B3 = contentPane.curLGP.getCellValue("B3");
var A3 = contentPane.curLGP.getCellValue("A3");
alert("a3的值:"+A3);
alert("b3的值:"+B3);

contentPane.curLGP.selectTDCell(“A2”):表示的是,將光標強制跳轉到A2單元格,也就相當於用鼠標點擊了一下A2單元格,使其獲得光標,進而強制B3單元格刷新值。

常見場景

用戶通過文本框填報了值,而需要對這個值進行取出判斷的時候,經常會取空值,只有用戶點擊了空白區域,纔可以正常取值。

比如:用戶填寫了手機號碼,就可以跳轉到領取獎品的頁面,若手機號碼是最後一個填報欄,填寫後,用戶直接提交,系統則會認爲,手機號碼一欄爲空。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章