示例说明
在灵活分析中对文本框参数的输入值进行限制,如下图:A 参数值不能小于12,B参数值不能小于A。


设置方法
- 在资源定制中,创建一张灵活分析(带两个文本输入参数A和B)。
- 选中灵活分析,右键选择 编辑宏 进入报表宏界面。
- 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为simpleReport;事件为onParamValueChanged;并把下面宏代码复制到代码区域。
宏类型
类型 | 对象 | 事件 |
ClientSide | simpleReport | onParamValueChanged |
宏代码
function main(simpleReport, simpleReportContext) {
// 定义参数名称
var startParamName = "A";
var endParamName = "B";
// 定义参数值的条件函数
function checkStartParam(val) {
return parseInt(val) > 12;
}
function checkEndParam(startVal, endVal) {
return parseInt(endVal) > parseInt(startVal);
}
// 获得参数控件
var startParamInput = getParamComponentByName(simpleReport, startParamName);
if (!startParamInput) {
alert("找不到参数:" + startParamName);
return;
}
var endParamInput = getParamComponentByName(simpleReport, endParamName);
if (!endParamInput) {
alert("找不到参数:" + endParamName);
return;
}
startParamInput.__oldValue = startParamInput.value;
endParamInput.__oldValue = endParamInput.value;
// 绑定事件检查非法字符输入
startParamInput.onkeydown = checkKeydown;
endParamInput.onkeydown = checkKeydown;
// 绑定事件检查条件函数
if (domutils.isIE()) {
startParamInput.onpropertychange = function() {
if (checkStartParam(startParamInput.value)) {
startParamInput.__oldValue = startParamInput.value;
} else {
alert("参数" + startParamName + "不符合条件,输入值应大于12");
startParamInput.value = startParamInput.__oldValue;
}
};
endParamInput.onpropertychange = function() {
if (checkEndParam(startParamInput.value, endParamInput.value)) {
endParamInput.__oldValue = endParamInput.value;
} else {
alert("参数" + endParamName + "不符合条件,输入值应大于参数A的值");
endParamInput.value = endParamInput.__oldValue;
}
};
} else {
startParamInput.onblur = function() {
if (checkStartParam(startParamInput.value)) {
startParamInput.__oldValue = startParamInput.value;
} else {
alert("参数" + startParamName + "不符合条件,输入值应大于12");
startParamInput.value = startParamInput.__oldValue;
}
};
endParamInput.onblur = function() {
if (checkEndParam(startParamInput.value, endParamInput.value)) {
endParamInput.__oldValue = endParamInput.value;
} else {
alert("参数" + endParamName + "不符合条件,输入值应大于参数A的值");
endParamInput.value = endParamInput.__oldValue;
}
};
}
}
// 检查非法字符
function checkKeydown() {
var ev = window.event;
if (!isValidKey(ev.keyCode)) {
ev.returnValue = false;
return;
}
}
// 判断哪些字符是有效的
function isValidKey(keyCode) {
//return 48 / 0 / <=keyCode && keyCode <= 57 / 9 / ||keyCode == 46 / Delete / ||keyCode == 8 / Backspace / ||keyCode == 9 / Tab / ||keyCode == 37 / Left / ||k//eyCode == 39 / Right / ;
return (keyCode >= 48 && keyCode <= 57) || keyCode == 46 || keyCode == 8 || keyCode == 9 || keyCode == 37 || keyCode == 39;
}
// 通过参数名获得参数控件
function getParamComponentByName(simpleReport, paramName) {
var paramIndex = getParamIndexByName(simpleReport, paramName);
if (paramIndex < 0) {
return null;
}
return simpleReport.paramPanelObj.paramObjList[paramIndex];
}
// 通过参数名获得参数序号
function getParamIndexByName(simpleReport, paramName) {
for (var i = 0; i < simpleReport.params.length; i++) {
with(simpleReport.params[i]) {
if (name == paramName) {
return i;
}
if (alias == paramName) {
return i;
}
}
}
reutrn - 1;
}
关键对象总结
- 通过参数名获取参数对象:getParamComponentByName(simpleReport, paramName)
- 通过参数名获取参数序号:getParamIndexByName(simpleReport, paramName)
资源文件:migrate.xml