Support Article

OOTB Java Script Enters Infinite Loop & Clear Radio Buttons

SA-39088

Summary



The user configured a long input form in a single section which contains radio buttons and other controls. The user form loads dynamically, based on the input selection using "Visible when" condition along with "refresh this section" action number of times in the same form. After some time, the radio button values in the input form get cleared. However, the selection exist in the clipboard as well as HTML markup


Error Messages



Not Applicable


Steps to Reproduce

  1. Create a long input form using section
  2. Configure "refresh this section" action on each input field.
  3. Make sure multiple radio button controls exist in the form with referesh this section action
  4. While filling the form, Radio button values get reset


Root Cause



A defect in Pegasystems’ code or rules : This is a know behavior and is implemented as per design.

When there is an AutoComplete in the input form, "section" markup appears two time in UI, one in popup and other as seen in visible area. Due to this on refresh, we see the current issue.


Resolution



Perform the following local-change:
  1. Open the rule "UserWorkForm"
  2. Save as the rule to application RuleSet.
  3. Place the following code snippet and Save the rule.

Code Snippet:
-------------------
<script type="text/javascript">
$(document).ready(function(){
var _originalFn = pega.u.d.getPopOver().close;
if(pega && pega.u && pega.u.d && pega.u.d.getPopOver && pega.u.d.getPopOver()) {
pega.u.d.getPopOver().close = function (closeReason, closeResult, forceClose) {
var _container = this.getActivePopOverElement();
varreturnValue = _originalFn.call(this, closeReason, closeResult, forceClose);
$(_container).find("input").removeAttr("name").removeAttr("validationtype").removeAttr("data-required");
$(_container).find("select").removeAttr("name").removeAttr("validationtype").removeAttr("data-required");
$(_container).find("textarea").removeAttr("name").removeAttr("validationtype").removeAttr("data-required");
$(_container).find("#RULE_KEY").removeAttr("node_name");
$(_container).find("#CT").removeAttr("id");
return returnValue;
};
}

});
</script>

Published June 8, 2017 - Updated June 11, 2017

Have a question? Get answers now.

Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.