shilibin2001
作者shilibin2001·2013-03-26 14:21
软件开发工程师·深圳平安科技

prompt value限制(转)

字数 3757阅读 1950评论 4赞 0
在用Cognos8做报表是遇到的问题:
需要对输入的提示值进行合法性校验,当值非法时,弹出对话框提示并阻止调教报表,需要获取Cognos控件的值,进行判断,例子是两个日期间隔的判断,通过在报表中添加‘HTML项目’后添加js函数实现:
Javascript代码 复制代码 收藏代码
  1.  <button id = "a" onClick = "javascript: validDate();" class='bp'>查询</button>   
  2. <script language='javascript'>   
  3. function diffDate(v_begin,v_end)   
  4. {   
  5.    var diff =0;   
  6.    beg = new Date();      
  7.    end = new Date();   
  8.    var tmp = new Array(3);   
  9.    tmp  = v_begin.split('-');   
  10.    beg.setYear(tmp[0]);   
  11.    beg.setMonth(tmp[1]);   
  12.    beg.setDate(tmp[2]);   
  13.    tmp  = v_end.split('-');   
  14.    end.setYear(tmp[0]);   
  15.    end.setMonth(tmp[1]);   
  16.    end.setDate(tmp[2]);   
  17.    diff = (end-beg)/(1000*60*60*24);//单位:毫秒转换为天   
  18.    return diff;   
  19. }   
  20. function validDate(){   
  21.    var form = getFormWarpRequest();   
  22.    var date_end = form.txtDate_DateEnd.value;  //_DateEnd为Cognos中控件的名称,txtDate_ 为控件前缀   
  23.    var date_beg = form.txtDate_DateBeg.value;   
  24.    var span=diffDate(date_beg ,date_end );   
  25.    if(span>15)   
  26.     {alert('日期间隔不得超过15天!');   
  27.      return false;}   
  28.    else if(span<0){   
  29.    alert('开始日期应小于结束日期!');   
  30.    return false;}    
  31.   else{     
  32.    promptButtonFinish();   
  33.    }   
  34. }   
  35.   
  36. </script>  
<button id = "a" onClick = "javascript: validDate();" class='bp'>查询</button> <script language='javascript'> function diffDate(v_begin,v_end) { var diff =0; beg = new Date(); end = new Date(); var tmp = new Array(3); tmp = v_begin.split('-'); beg.setYear(tmp[0]); beg.setMonth(tmp[1]); beg.setDate(tmp[2]); tmp = v_end.split('-'); end.setYear(tmp[0]); end.setMonth(tmp[1]); end.setDate(tmp[2]); diff = (end-beg)/(1000*60*60*24);//单位:毫秒转换为天 return diff; } function validDate(){ var form = getFormWarpRequest(); var date_end = form.txtDate_DateEnd.value; //_DateEnd为Cognos中控件的名称,txtDate_ 为控件前缀 var date_beg = form.txtDate_DateBeg.value; var span=diffDate(date_beg ,date_end ); if(span>15) {alert('日期间隔不得超过15天!'); return false;} else if(span<0){ alert('开始日期应小于结束日期!'); return false;} else{ promptButtonFinish(); } } </script>
因为原有的提示按钮不提供参数合法性判断,因此使用了标准的按钮,为了和报表的风格保持一致,需要查找报表的相应控件使用的CSS类。
Cognos中CSS文件的存放地址:
/cognos/c8/reportstyles/default_layout.css
/cognos/c8/reportstyles/GlobalReportStyles.css
提示按钮的CSS类在GlobalReportStyles.css中为bp。
提示按钮对应的函数:
完成-->promptButtonFinish();
取消-->promptButtonCancel();
下一步->promptButtonNext();
需要注意的是‘重新提示’没有对应的函数,查看了些外国的资料都提到了没有找到该函数;
同时在js中引用Cognos控件时需要知道控件的前缀:
文本提示: _textEditorBox
值提示: _oLstChoices
日期提示:txtDate
在操作控件前首先要获取表单对象:
var form = getFormWarpRequest();

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论4 条评论

cognosxiaoyangcognosxiaoyang软件开发工程师新致
2013-05-22 14:28
有用,学习了
a530491093a530491093系统工程师mycle
2013-05-11 16:27
very good !  I learn a lot!
zhu_yizhu_yi软件开发工程师ABC
2013-03-29 20:39
谢谢分享!
lurin1014lurin1014软件开发工程师江苏盐城天虹建设集团有限公司
2013-03-27 12:51
学习一下,下次应用!
Ctrl+Enter 发表

作者其他文章

相关问题

相关资料

X社区推广