本帖最后由 LukeLiu 于 2019-11-27 20:14 编辑
活字格们目前的策略
对于单元格的值,活字格目前的策略是当这个单元格(比如输入框或者多行文本框)失去焦点后才会触发更新。
解决问题
通过键盘事件的触发,手动获取单元格的值,当然,这样的非常规操作需要一些代码实现,不过活字格已经内置了jQuery,可以让我们比较方便的处理这个需求,效果:
步骤:
1. 设置“多行文本框”或者“输入框”的单元格名称为“input”,显示字数的单元格名称为“output”。
2. 在需要这个功能的页面设置页面加载命令:
其中,代码为:- // 可配置部分
- const INPUT_CELL_NAME = "input"
- const OUTPUT_CELL_NAME = "output"
- const INPUTABLE_ELEMENTS = ["textarea", "input"]
- // 工具部分
- const getCellByName = (cell_name) => Forguncy.Page.getCell(cell_name)
- const getStrLen = (str) => str ? str.length : 0
- const setCellKeyupEventHandleFuncByName = (cell_name, callback) => $(`[fgcname=${cell_name}]`).keyup(callback)
- const setCellValueByName = (cell_name, output_value) => {
- let cell = getCellByName(cell_name)
- cell.setValue(output_value)
- }
- // 实现部分
- function main() {
- let input_content_length = 0
- const handleFunc = () => {
- input_content_length = getStrLen($(`[fgcname=${INPUT_CELL_NAME}]`).find(INPUTABLE_ELEMENTS.join(",")).val())
- setCellValueByName(OUTPUT_CELL_NAME, input_content_length)
- }
- setCellKeyupEventHandleFuncByName(INPUT_CELL_NAME, handleFunc)
- }
- // 执行部分
- main()
复制代码
|