1

So basically i have a requirement to Create a validation on a sub form to control user from submitting a back date in an extension request. I've used a custom object validation but there is an issue by showing the original Save, Save & Close along with the Custom Object Save, Save & Close.

The custom object validation is working but showing the Original Save, Save & Close is a major issue.

Please find the code below.

<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>

1 Answers1

0

Try the updated code below.

<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>
DjP
  • 308
  • 1
  • 6
  • Now it's validating and shows only 1 save, Save & Close. The issue is it doesn't actually save even with future dates. So it's validating as expected but not saving the record. – Ahmad Mazhar Mar 06 '21 at 13:10