onpropertychange не работает в новой версии Cognos - PullRequest
0 голосов
/ 11 октября 2018

В cognos 10.2 приведенный ниже скрипт js хорошо работал для функций скрытия / показа, но после перехода на cognos 11.0.12 он не работает нормально.

Я заменил
node.onpropertychange=ShowOrHide; на node.addEventListener("change", function(){ShowOrHide();});, и это сработало только тогда, когда я изменил значения переключателей, а не при запуске отчета.

Сценарий js выглядит следующим образом:

<script type="text/javascript">

try
{
  var cntlName;
  var eleTarget1 = document.getElementById('DateRadPrompt');
  var node_listDB = eleTarget1.getElementsByTagName('input');
  var eleTarget11 = document.getElementById('divGreyOut');
  var fW = (typeof getFormWarpRequest == "function" ? getFormWarpRequest() : document.forms["formWarpRequest"]);
  if ( !fW || fW == undefined) { 
  fW = ( formWarpRequest_THIS_ ? formWarpRequest_THIS_ : formWarpRequest_NS_ );}
  var list = fW._oLstChoicestodate; 


  for (var i = 0; i < node_listDB.length; i++)
  {
     var node = node_listDB[i];
     if (node.getAttribute('type') == 'radio')
     {                              
        node.addEventListener("change", function(){ShowOrHide();});                       
     }                                 
  }

  function ShowOrHide()
  {
    console.log('welcomeShowOrHide');
    var DateRadPrompt = document.getElementById('DateRadPrompt');
    var eleSource11 = event.srcElement;

    if(eleSource11.checked)
    {
      if (eleSource11.value == 'most_qtr'|| eleSource11.value == 'most_mon1'|| eleSource11.value == 'most_mon2' || eleSource11.value == 'most_mon3' ||  eleSource11.value == 'cal_prompt' ||  eleSource11.value == 'most_fsc_yr' ||  eleSource11.value == 'most_mon12' ||  eleSource11.value == 'most_qtr4' ||  eleSource11.value == 'cal_prompt1') 
     {
      eleTarget11.style.display ='none';
     } 
     else 
     {
        eleTarget11.style.display ='block';         
     }
  }
}

list.remove(1); 
list.remove(0); 
list.removeAttribute("hasLabel"); 

for (var i=0; i<=node_listDB.length;1++)
{

  var nodeDB = node_listDB[i];
  if(nodeDB.options[i].selected == true)
  {
    null
  }
  else
  {
    nodeDB.options[0].selected = true
  }

}
if (list.options.length==1) 
{
  eleTarget1.style.display='none';          
}
canSubmitPrompt();
}
catch(e)
{

}

</script>`
...