1. 概述
1.1 预期效果在实际场景中,当我们将鼠标移动到相应单元格时,会弹出 单元格内容提示 。参数面板中,若想实现点击参数面板上控件或鼠标悬浮过控件时,也能显示自定义内容,要如何做呢?效果如下图所示: 1.2 实现思路1)通过 JS 给页面增加一个 div 元素,在这个 div 元素中写入内容,css 控制内容的样式。 2)添加点击事件或鼠标移入移出事件来显示 div 元素或者移除 div 元素。 其中,提示内容的位置:获取目标控件的位置 (x,y),再进行一定的像素偏移。 注:本文以文本框控件示例提供思路,其他控件以及 frm 模板,可参考本文方法,自行尝试实现。 2. 示例
2.1 模板准备新建模板,在「参数面板」中添加文本框控件 label0、label1,填写 label0 控件值为「点击显示」,label1 控件值为「悬浮显示」。如下图所示: 注:label 控件必须填写控件值,和后续添加的 JS 配合使用,否则无法实现预期效果。 2.2 添加 JS 事件1)点击「参数面板」,在「事件」处,为参数面板添加一个「初始化后」事件,实现鼠标点击文本控件 label0 时,显示自定义内容。如下图所示: JavaScript 代码如下: 注:JS 中,"dadfafasfsalakj<br />kalfasjdkfsafkjasfas" 为提示内容,格式通过 CSS 修改,见代码注释,请根据需要修改使用。 - setTimeout(function(){
- $("[widgetname='LABEL0']").click(function(e){
- var x = 10;
- var y = 20;
- //设置自定义内容,内容格式可以自行设置,如给添加换行、空格、表格,设置框架等
- var z = "dadfafasfsalakj<br />kalfasjdkfsafkjasfas"
- //每次点击控件前删除上次点击出现的内容,防止多次点击内容叠加,导致页面出错
- $("#preview").remove();
- $("body").append("<div id='preview'>"+z+"</div>");//弹出一个div放置内容
- //修改div的样式,可以根据需要,设置内边距,背景,边框,圆角,字号,字体,字色等样式
- $("#preview")
- .css("position","absolute")
- .css("z-index","9999999")
- .css("left",(e.pageX + x + 'px')) //调整div出现的水平方向位置
- .css("top",(e.pageY - y + 'px')) //调整div出现的垂直方向位置
- .css("padding","4px")
- .css("border","1px solid pink")
- .css("border-radius","4px")
- .css("background-color","skyblue")
- .css("font-size","14px")
- .css("font-famliy","微软雅黑")
- .css("color","blue")
- e.stopPropagation(); //阻止冒泡事件
- });
- //点击body其他部移除元素div,防止点击其他部位,出现自定义提示
- $("body").click(function(e){
- $("#preview").remove();
- })
- },100);
复制代码
2)同样方法为「参数面板」再添加一个「初始化后」事件,实现鼠标悬浮过文本控件 label1 时,显示自定义内容。 JavaScript 代码如下: 注:JS 中,"dadfafasfsalakj<br />kalfasjdkfsafkjasfas" 为提示内容,格式通过 CSS 修改,见代码注释,请根据需要修改使用。 - setTimeout(function(){
- $("[widgetname='LABEL1']").mouseover(function(e){
- var x = 10;
- var y = 20;
- //设置自定义内容,内容格式可以自行设置,如给添加换行、空格、表格,设置框架等
- var z = "1.dadfafasfsalakj<br />2.kalfasjdkfsafkjasfas"
- //每次点击控件前删除上次点击出现的内容,防止多次点击内容叠加,导致页面出错
- $("body").append("<div id='preview1'>"+z+"</div>");
- //修改div的样式,可以根据需要,设置内边距,背景,边框,圆角,字号,字体,字色等样式
- $("#preview1")
- .css("position","absolute")
- .css("z-index","9999999")
- .css("left",(e.pageX + x + 'px')) //调整div出现的水平方向位置
- .css("top",(e.pageY - y + 'px')) //调整div出现的垂直方向位置
- .css("padding","4px")
- .css("border","1px solid pink")
- .css("border-radius","4px")
- .css("background-color","skyblue")
- .css("font-size","14px")
- .css("font-famliy","微软雅黑")
- .css("color","blue")
- });
- //鼠标离开,移除div
- $("[widgetname='LABEL1']").mouseout(function(e){
- $("#preview1").remove();
- });
- },100)
复制代码
2.3 效果预览保存模板,点击「分页预览」,效果如 1.1 节预期效果所示。 注:此方法不支持移动端。 3. 模板下载已完成的模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\参数界面JS实例\JS实现鼠标点击或悬浮过控件时显示自定义内容.cpt 模板见附件
编辑于 2020-12-17 16:50
|