Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Newvalue and oldvalue in onsubmit Client script

Anburaj
Giga Contributor

I have requirement like in change request , while change manager is approving the change request

if proposed start date or proposed end date is changed that time, i need to throw a error message.

I need to do this scenario in onsubmit client script.

I got the proper query, but these proposed date change am having the problem.

using get value i got the proposed start date or proposed end date in a variable.

But in need to set new value of proposed start date != old value of proposed start date

or newvalue of proposed end date != old value of proposed end date.

How to achieve this in client script onsubmit?

Please help.

1 ACCEPTED SOLUTION

PriyaRanji
Tera Guru

Hi Anburaj,



Good Day!



function onSubmit() {


var approver = g_form.getValue('approver');


if(approver != ''){
validateTravelEndDate();


return false;
}


else{


return true;


}


}



//Helper function which calls a AJAX script include called "ClientDateTimeUtils" which gives the response in a callback where i am deciding whether to submit the form or not based on the status of days result.

function validateTravelEndDate() {
  var startDate = g_form.getValue('proposed_start_date'); //First Date/Time field
  var endDate = g_form.getValue('proposed_end_date'); //Second Date/Time field
  var dttype = 'day'; //this can be day, hour, minute, second. By default it will return seconds.

  var ajax = new GlideAjax('ClientDateTimeUtils'); // This is the script include which can be used for date validation.
  ajax.addParam('sysparm_name', 'getDateTimeDiff');
  ajax.addParam('sysparm_fdt', startDate);
  ajax.addParam('sysparm_sdt', endDate);
  ajax.addParam('sysparm_difftype', dttype);
  ajax.getXML(checkDateDiff);
}

// callback function where deciding to go ahead or not with form submission.
function checkDateDiff(response) {
  var answer = response.responseXML.documentElement.getAttribute("answer");
  if (answer <= 0) {
  alert("Proposed End date must be after Proposed Start date.");
g_form.setValue('proposed_end_date', '');
  g_form.showFieldMsg('proposed_end_date', 'Please provide a future date', 'error');
  return false;
} else {
  g_form.submit(); // This has some issue as it's going in the infinite loop and if we just return true/false from here as it's asynchronous call , it's not handled by the onSubmit function
  }
}



PS: hit correct/helpful....if it helps




Thanks,


Priyanka R


View solution in original post

16 REPLIES 16

Code which i used :




function onSubmit() {



 


var str_changeType = g_form.getValue('type');


var conflict = g_form.getValue('conflict_status');


var actionName = g_form.getActionName();


  var startDate = g_form.getValue('start_date'); //First Date/Time field


  var endDate = g_form.getValue('end_date'); //Second Date/Time field


  var dttype = 'day'; //this can be day, hour, minute, second. By default it will return seconds.




if(actionName == 'approve_button' ){


//alert('approvr');


if(str_changeType == 'Normal'|| str_changeType == 'Expedited'){


//alert('CT');


if(conflict == 'Conflict'){


//alert('CF');



  var ajax = new GlideAjax('ClientDateTimeUtils'); // This is the script include which can be used for date validation.


  ajax.addParam('sysparm_name', 'getOutageDateTimeDiff');


  ajax.addParam('sysparm_fdt',startDate);


  ajax.addParam('sysparm_sdt',endDate);


  ajax.addParam('sysparm_difftype', dttype);


  ajax.getXML(function(response){




  var answer = response.responseXML.documentElement.getAttribute("answer");


//alert('anbu'+answer);


  if (answer <= 0) {



alert('test.');



return;


}


});


}


}


}


}


Looks Good!