JS实现单击控件可直接编辑

  • 文档创建者:yets11
  • 编辑次数:10次
  • 最近更新:Kevin-s 于 2019-12-06
  • 1. 概述

    1.1 问题描述

    场景描述:在填报应用中,可以直接设置显示控件,但是在模板中如果控件较多的情况下,会导致页面加载速度非常慢,有时内容多时显示控件也会导致页面不美观,不得已需要放弃直接显示控件。这样默认的情况下需要双击单元格才能进入控件进行编辑,显得比较繁琐,而且如果只是单击或使用Tab键选择单元格时,直接编辑输入汉字时第一个拼音字母会被单元格吃掉,导致输入出错出错,如下图:

    222

    那么如何实现选择一次单元格后自动进入编辑状态呢,如下图

    222

    1.2 实现思路

    1)方法一

    利用 contentPane.on 事件来监测单元格选择事件,在选择单元格事件中对选择的单元格设置编辑事件。

    2) 方法二

    利用 contentPane 提供的 setEditOnClick()与 setEditOnMove()来设置点击或键盘按下 Tab 键来移动光标选择单元格时是否直接编辑。

    2. 示例

    2.1 方法一 实现过程

    为模板添加加载结束事件,如下图:

    image.png

    代码如下:


    //监测单元格选择事件
    contentPane.on('cellselect',function(td){
    //对选择的单元格调用编辑事件
    contentPane.curLGP.editTDCell(td);
    })

    注:此方法适用于直接鼠标选择或 Tab 键来选择单元格后直接显示并编辑控件

    2.2 方法二 实现过程

    为模板添加加载结束事件,如下图:

    image.png

    代码如下:


    //设置点击单元格时直接编辑
    contentPane.setEditOnClick(true);
    //设置使用Tab键移动光标选择单元格时直接编辑
    contentPane.setEditOnMove(true);

    2.3 总结

    以上两种方法均可以实现选择单元格后直接显示控件并编辑,提高我们报表的易用性和更好的交互体验。

    方法一可以结合其他代码一起使用,比如 自定义添加删除行按钮 或 JS 去除填报左上角红色三角 等效果都会用到此方法。

    方法二更简单直观,但是使用时必须把两行代码全加上,一个是控制鼠标选择单元格,一个是控制Tab键来选择单元格。

    2.4 预览效果

    保存模板,选择填报预览,实现效果下图所示:

    1)方法一

    222

    2)方法二

    222

    注:经过测试,手机端和 H5 不支持该效果。

    3. 模板下载

    1)方法一

    模板效果在线查看请点击:JS 实现单击控件可直接编辑方法一.cpt

    已完成的模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填报预览JS实例\18-JS实现单击控件可直接编辑方法一.cpt

    点击下载模板 :18-JS实现单击控件可直接编辑方法一.cpt

    2)方法二

    模板效果在线查看请点击:JS 实现单击控件可直接编辑方法二.cpt

    已完成的模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填报预览JS实例\18-JS实现单击控件可直接编辑方法二.cpt

    点击下载模板:18-JS实现单击控件可直接编辑方法二.cpt


    附件列表


    主题: 二次开发
    • 有帮助
    • 没帮助
    • 只是浏览