qberta01
Programmer
- Nov 14, 2005
- 113
Hello,
I am using BI 8.3 and would like to have a page that prompts the user for a value (Text Box Prompt) and once the value is entered I want to update a Text Item to reflect the entered value +1. So if the user enters a start range of say 1, I want the Text Item to dynamically reflect 2 as the end range. I found some code on Cognos support that updates a text box based on a change in a value prompt. I am having a difficult time manipulating the code to do what I want. Below is that Javascript from Cognos support:
<script type="text/javascript">
/**
Call this function to know if all required prompts have valid inputs.
*/
function canSubmPrompt()
{
var bFormValid = true;
var aPreProcess = getPreProcessControlArray();
if (aPreProcess)
{
var kCount = aPreProcess.length;
var k = 0;
for (k=0; k<kCount; k++)
{
var promptElement = eval(aPreProcess[k]);
if ( promptElement.isValid() === false )
{
bFormValid = false;
}
}
}
if (bFormValid === false)
{
var sPrompt_Required_Values_missing = "sPrompt_Required_Values_missing";
if (typeof PMT_UIM_PROMPT_CONFIRMATION_VALUE_MISSING == K_PRMT_sSTRING) {
sPrompt_Required_Values_missing = PMT_UIM_PROMPT_CONFIRMATION_VALUE_MISSING;
}
return false;
}
return true;
}
function getObject(obj, type)
{
// step through all child elements of obj and look for an id that starts with 'type':
for (var i = 0; i < obj.ownerDocument.formWarpRequest.elements.length; i ++)
{
if (obj.ownerDocument.formWarpRequest.elements !=null && obj.ownerDocument.formWarpRequest.elements.id != null)
{
if ( obj.ownerDocument.formWarpRequest.elements.id.indexOf(type) !=-1)
{
return obj.ownerDocument.formWarpRequest.elements.id;
}
}
}
}
function modifyListOnchange(targetTxt)
{
// mySelectDiv is a DIV that is added manually around the Value Prompt Drop Down List.
var myDiv = document.getElementById("mySelectDiv");
// the actual control is the firstChild object of the div.
var div = myDiv.firstChild;
// retrieve the Value Prompt Drop Down List object
var selectNode = getObject(div,"PRMT_SV_N");
// retrieve the List Options array
var mySelectNode = document.getElementById(selectNode);
// add an onchange event to the Value Prompt Drop Down List that will set the value of the Text Box to the same
// as the value in the Value Prompt Drop Down List, if the user changes the selection of the list box.
mySelectNode.onchange=function()
{
setTimeout('canSubmPrompt()', 100);
document.getElementById(targetTxt).value=this.value;
}
}
function validateEntry(txtVal)
{
var myDiv = document.getElementById("mySelectDiv");
var div = myDiv.firstChild;
var selectNode = getObject(div,"PRMT_SV_N");
var mySelectNode = document.getElementById(selectNode);
if (txtVal!='') {
for (i = 0; i < mySelectNode.options.length; i++)
{
if (mySelectNode.value == txtVal) {
mySelectNode.selected=true;
setTimeout('canSubmPrompt()', 100);
document.getElementById('validFlag').innerHTML ='<span style="font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif; color: #00FF33">OK</span>';
return true;
}
}
}
mySelectNode[0].selected=true;
setTimeout('canSubmPrompt()', 100);
document.getElementById('validFlag').innerHTML ='<span style="font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif; color: #FF0000">X</span>';
return false;
}
window.onload=function(){
modifyListOnchange('txtEntry' );
}
</script>
I assume what I want to do is possible. Any help would be greatly appreciated.
thx
Q.
I am using BI 8.3 and would like to have a page that prompts the user for a value (Text Box Prompt) and once the value is entered I want to update a Text Item to reflect the entered value +1. So if the user enters a start range of say 1, I want the Text Item to dynamically reflect 2 as the end range. I found some code on Cognos support that updates a text box based on a change in a value prompt. I am having a difficult time manipulating the code to do what I want. Below is that Javascript from Cognos support:
<script type="text/javascript">
/**
Call this function to know if all required prompts have valid inputs.
*/
function canSubmPrompt()
{
var bFormValid = true;
var aPreProcess = getPreProcessControlArray();
if (aPreProcess)
{
var kCount = aPreProcess.length;
var k = 0;
for (k=0; k<kCount; k++)
{
var promptElement = eval(aPreProcess[k]);
if ( promptElement.isValid() === false )
{
bFormValid = false;
}
}
}
if (bFormValid === false)
{
var sPrompt_Required_Values_missing = "sPrompt_Required_Values_missing";
if (typeof PMT_UIM_PROMPT_CONFIRMATION_VALUE_MISSING == K_PRMT_sSTRING) {
sPrompt_Required_Values_missing = PMT_UIM_PROMPT_CONFIRMATION_VALUE_MISSING;
}
return false;
}
return true;
}
function getObject(obj, type)
{
// step through all child elements of obj and look for an id that starts with 'type':
for (var i = 0; i < obj.ownerDocument.formWarpRequest.elements.length; i ++)
{
if (obj.ownerDocument.formWarpRequest.elements !=null && obj.ownerDocument.formWarpRequest.elements.id != null)
{
if ( obj.ownerDocument.formWarpRequest.elements.id.indexOf(type) !=-1)
{
return obj.ownerDocument.formWarpRequest.elements.id;
}
}
}
}
function modifyListOnchange(targetTxt)
{
// mySelectDiv is a DIV that is added manually around the Value Prompt Drop Down List.
var myDiv = document.getElementById("mySelectDiv");
// the actual control is the firstChild object of the div.
var div = myDiv.firstChild;
// retrieve the Value Prompt Drop Down List object
var selectNode = getObject(div,"PRMT_SV_N");
// retrieve the List Options array
var mySelectNode = document.getElementById(selectNode);
// add an onchange event to the Value Prompt Drop Down List that will set the value of the Text Box to the same
// as the value in the Value Prompt Drop Down List, if the user changes the selection of the list box.
mySelectNode.onchange=function()
{
setTimeout('canSubmPrompt()', 100);
document.getElementById(targetTxt).value=this.value;
}
}
function validateEntry(txtVal)
{
var myDiv = document.getElementById("mySelectDiv");
var div = myDiv.firstChild;
var selectNode = getObject(div,"PRMT_SV_N");
var mySelectNode = document.getElementById(selectNode);
if (txtVal!='') {
for (i = 0; i < mySelectNode.options.length; i++)
{
if (mySelectNode.value == txtVal) {
mySelectNode.selected=true;
setTimeout('canSubmPrompt()', 100);
document.getElementById('validFlag').innerHTML ='<span style="font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif; color: #00FF33">OK</span>';
return true;
}
}
}
mySelectNode[0].selected=true;
setTimeout('canSubmPrompt()', 100);
document.getElementById('validFlag').innerHTML ='<span style="font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif; color: #FF0000">X</span>';
return false;
}
window.onload=function(){
modifyListOnchange('txtEntry' );
}
</script>
I assume what I want to do is possible. Any help would be greatly appreciated.
thx
Q.