另一种填报校验方式

报表中常规校验结果以弹出窗口的方式显示,这样的提醒比较单一,下面介绍一种通过结合js函数实现的可用性更强的校验方法。

效果如下:

对于不同输入对象的数值控制校验动作,下图中只校验资产负债率的输入数值,其它输入格子不做校验。

以资产负债率后面的格子中输入大于0的数值为正确规则,输入数值时正常显示;

当输入非法数值时将输入格子的字体颜色更改为红色,单元格背景色更改为绿色,如下图所示:

实现过程如下:

1 定义校验js函数

function check(cellName,arg2)

{

if(cellName==”资产负债率“)

{

if(arg2>0)

{

report1.currCell.style.backgroundColor=’#ffffff’;

report1.currCell.style.color=’black’;

map.remove(cellName);

}

else

{

report1.currCell.style.backgroundColor=’#00FF00′;

report1.currCell.style.color=’red’;

map.put(cellName,1);

}

}

return true;

}

2 在报表单元格校验中定义:


3 定义map对象保留校验结果。(该方式可选)

var map = new Map();

map对象的定义见附件源码。

4 定义页面上的提交函数。

function submitdata()

{

if(map.size()==0)

_submitTable( report1 );

else

alert(“存在不符校验规则数据!“);

}

注意:

1 该方法现只用于普通填报表,行式填报表还没有调通。

2 可以替代报表上的非即时校验,效果更好。

附件:

Jsp源码:

<%@ page contentType=”text/html;charset=GBK” %>

<%@ taglib uri=”/WEB-INF/runqianReport4.tld” prefix=”report” %>

<%@ page import=”java.io.*”%>

<%@ page import=”java.util.*”%>

<%@ page import=”com.runqian.report4.usermodel.Context”%>

<script LANGUAGE=’JavaScript’>

function struct(key, value) {

this.key = key;

this.value = value;

}

function put(key, value){

for (var i = 0; i < this.arr.length; i++) {

if ( this.arr[i].key === key ) {

this.arr[i].value = value;

return;

this.arr[this.arr.length] = new struct(key, value);

}

function get(key) {

for (var i = 0; i < this.arr.length; i++) {

if ( this.arr[i].key === key ) {

return this.arr[i].value;

return null;

}

function remove(key) {

var v;

for (var i = 0; i < this.arr.length; i++) {

v = this.arr.pop();

if ( v.key === key ) {

continue;

this.arr.unshift(v);

}

function size() {

return this.arr.length;

}

function isEmpty() {

return this.arr.length <= 0;

}

function Map() {

this.arr = new Array();

this.get = get;

this.put = put;

this.remove = remove;

this.size = size;

this.isEmpty = isEmpty;

this.sort = sort;

}

function sort() {

}

</script>

<html>

<body leftMargin=0 top =0 rigtMargin=0 bottonMargin=0>

<report:html name=”report1″ reportFileName=”jiaoyan.raq”

funcBarLocation=”"

needPageMark=”yes”

/>

<INPUT TYPE=”button” VALUE=”提交” ONCLICK=”submitdata()”>

<SCRIPT LANGUAGE=’JavaScript’>

var map = new Map();

function _bindingEditor( cell ) {

var table = _lookupTable( cell );

if( ! _submitEditor( table ) ) return;

var editor = _lookupEditor( table, cell );

table.currEditor = editor;

_setRowColBackColor( cell );

_setEditorStyle( editor, cell );

}

function check(cellName,arg2)

{

if(cellName==”资产负债率“)

{

if(arg2>0)

{

report1.currCell.style.backgroundColor=’#ffffff’;

report1.currCell.style.color=’black’;

map.remove(cellName);

}

else

{

report1.currCell.style.backgroundColor=’#00FF00′;

report1.currCell.style.color=’red’;

map.put(cellName,1);

}

}

return true;

}

function submitdata()

{

if(map.size()==0)

_submitTable( report1 );

else

alert(“存在不符校验规则数据!“);

}

</SCRIPT>

</body>

</html>


热门文章