【问题标题】:RSA Archer Back Date ValidationRSA Archer 回溯日期验证
【发布时间】:2021-05-29 11:54:41
【问题描述】:

所以基本上我需要在子表单上创建验证以控制用户在扩展请求中提交回溯日期。 我使用了自定义对象验证,但通过显示原始保存、保存和关闭以及自定义对象保存、保存和关闭存在问题。

自定义对象验证正常,但显示原始保存、保存和关闭是一个主要问题。

请在下面找到代码。

<script type="text/javascript">
     //Define date field ids
     var dateOccurredFldId = 22418;

    // For todays date;
     Date.prototype.today = function () { 
          return (((this.getMonth()+1) < 10)?"0":"") + (this.getMonth()+1) +"/"+ ((this.getDate() < 10)?"0":"") + this.getDate() + "/" + this.getFullYear();
     }

     // For the time now
          Date.prototype.timeNow = function () {
          return ((this.getHours() < 10)?"0":"") + this.getHours() +":"+ ((this.getMinutes() < 10)?"0":"") + this.getMinutes() +":"+ ((this.getSeconds() < 10)?"0":"") + this.getSeconds();
     }

     Sys.Application.add_load(function() {
          // Hijack Save and Close Button
          $('#master_btnSave').clone().attr('id', 'master_customBtnSave').insertBefore('#master_btnApply');
          $('#master_btnSave').hide();
          $('#master_customBtnSave').unbind('click').prop("onclick", null).click(function(){ DateCheck('save');return false;});

          // Hijack Save Button
          $('#master_btnApply').clone().attr('id', 'master_customBtnApply').insertBefore('#master_btnApply');
          $('#master_btnApply').hide();
          $('#master_customBtnApply').unbind('click').prop("onclick", null).click(function(){ DateCheck('apply');return false;});
     });

     function DateCheck(type) {
          //Get Date Field Values
          var dateOccurred = new Date(String($CM.getFieldValue(dateOccurredFldId, false)));
          var currentDate = new Date();
          var dateTime = currentDate.today() + ' '+ currentDate.timeNow();
          var currentDateTime = new Date(dateTime);


          //Set Alert Box Title
          var title = 'Warning';

          if(dateOccurred) {
               if(dateOccurred <= currentDate) {
                    WarningAlert('The <b>Entension Date</b> cannot be lesser than the <b> Current Date Created</b>','',title);
                    return false;
               } else {
                    SaveApply(type)
               }
          } else {
               SaveApply(type)
          }
     }

     function SaveApply(type) {
          if (type == 'save') {
               $('#master_btnSave').click();
          } else if (type == 'apply') {
               $('#master_btnApply').click();
          }
     }
</script>

【问题讨论】:

  • Ahmad,你用的是什么版本的 Archer?
  • 我目前的版本是6.7 P3

标签: javascript custom-object archer


【解决方案1】:

试试下面的更新代码。

<script type="text/javascript">
     //Define date field ids
     var dateOccurredFldId = 22418;

     // For todays date;
     Date.prototype.today = function () { 
          return (((this.getMonth()+1) < 10)?"0":"") + (this.getMonth()+1) +"/"+ ((this.getDate() < 10)?"0":"") + this.getDate() + "/" + this.getFullYear();
     }

     // For the time now
     Date.prototype.timeNow = function () {
          return ((this.getHours() < 10)?"0":"") + this.getHours() +":"+ ((this.getMinutes() < 10)?"0":"") + this.getMinutes() +":"+ ((this.getSeconds() < 10)?"0":"") + this.getSeconds();
     }

     // Hijack Save Button
     $('#master_btnApply1, #master_btnApplyIcon').unbind('click').prop("onclick", null).click(function(){ DateCheck('Apply');return false;})

     // Hijack Save And Close Button
     $('#master_btnSave1').unbind('click').prop("onclick", null).click(function(){ DateCheck('Save')});

     // Hide Right-Click Save and Save and Close Right-Click Menu Items
     $('.rmLink:Contains("Save")').parent().parent().hide();
     $('.rmLink:Contains("Save and Close")').parent().parent().hide();

     function DateCheck(action) {
          //Get Date Field Values
          var dateOccurred = new Date(String($CM.getFieldValue(dateOccurredFldId, false)));
          var currentDate = new Date();
          var dateTime = currentDate.today() + ' '+ currentDate.timeNow();
          var currentDateTime = new Date(dateTime);


          //Set Alert Box Title
          var title = 'Warning';

          if(dateOccurred) {
               if(dateOccurred <= currentDate) {
                    WarningAlert('The <b>Entension Date</b> cannot be lesser than the <b> Current Date Created</b>','',title);
                    return false;
               } else {
                    SaveApply(action)
               }
          } else {
               SaveApply(action)
          }
     }

     function SaveApply(action) {
          if (type == 'Save') {
               ShowAnimationAndPostback('master$btn' + action);
          } else if (type == 'Apply') {
               ShowAnimationAndPostback('master$btn' + action);
          }
     }
</script>

【讨论】:

  • 现在它正在验证并仅显示 1 次保存,保存并关闭。问题是它实际上并没有保存,即使是未来的日期。所以它正在按预期进行验证,但没有保存记录。
猜你喜欢
  • 2018-05-28
  • 2016-07-08
  • 2018-11-13
  • 1970-01-01
  • 2020-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多