- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-23-2023 01:17 AM
Hello @Ankur Bawiskar
I have used the script include from your previous blog and client script for changing my date format on my catalog variable form for a date type field. The problem is that I am able to change date format as required but my on change client script keeps on changing the field value continuously on the form. Can you pls help on this. Thanks in advance
Script Include:
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-23-2023 02:01 AM
you need to stop the recursion by checking the date format
something like this
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
if(oldValue != newValue){
var isValid = getDateFromFormat(newValue,'MM-dd-yyyy') != 0;
if(!isValid){
// trigger the ajax when the format is not valid
// when the format is valid it won't trigger ajax and will avoid recursion
//Type appropriate comment here, and begin script below
var userValue = g_form.getValue('start_date');
var ga = new GlideAjax('testDateFormat');
ga.addParam('sysparm_name', 'convertDateFormat');
ga.addParam('sysparm_format', userValue);
ga.getXML(result);
function result(response) {
var answer = response.responseXML.documentElement.getAttribute('answer').toString();
g_form.setValue('start_date', answer);
}
}
}
}
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-23-2023 01:21 AM
Hello @Ashwin Perumal1
Modify your client script :-
Client script:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
//Type appropriate comment here, and begin script below
var dateField = g_form.getControl('start_date');
if(dateField.changed){
var userValue = g_form.getValue('start_date');
var ga = new GlideAjax('testDateFormat');
ga.addParam('sysparm_name', 'convertDateFormat');
ga.addParam('sysparm_format', userValue);
ga.getXML(result);
function result(response) {
var answer = response.responseXML.documentElement.getAttribute('answer').toString();
g_form.setValue('start_date', answer);
}
}
}
Plz Mark my Solution as Accept and Give me thumbs up, if you find it helpful.
Regards,
Samaksh
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-23-2023 01:54 AM
Unfortunately its not now even changing the date format also.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-23-2023 02:01 AM
you need to stop the recursion by checking the date format
something like this
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
if(oldValue != newValue){
var isValid = getDateFromFormat(newValue,'MM-dd-yyyy') != 0;
if(!isValid){
// trigger the ajax when the format is not valid
// when the format is valid it won't trigger ajax and will avoid recursion
//Type appropriate comment here, and begin script below
var userValue = g_form.getValue('start_date');
var ga = new GlideAjax('testDateFormat');
ga.addParam('sysparm_name', 'convertDateFormat');
ga.addParam('sysparm_format', userValue);
ga.getXML(result);
function result(response) {
var answer = response.responseXML.documentElement.getAttribute('answer').toString();
g_form.setValue('start_date', answer);
}
}
}
}
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-23-2023 02:10 AM
@Ankur Bawiskar It 's working as expected. Thank you so much.