g_form.submit() is not working with spModal PoupUp Window
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
15 hours ago
I have a Catalog Client Script (onSubmit) running in Service Portal.
When a user selects Yes on a variable and no attachment is present, I display an spModal with two buttons:
- Okay → stay on the form (do not submit)
- Cancel → submit the request
I call g_form.submit() when the user clicks Cancel. However, that triggers my onSubmit again, the same condition is met, the modal opens again, and I end up in a submission loop. and form not getting submit.
function onSubmit() {
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
14 hours ago - last edited 14 hours ago
this worked for me, you can also enhance
function onSubmit() {
var errorAppear = g_form.getValue('gw_mi_did_any_errors_appear');
if (errorAppear === 'Yes' && this.document.getElementsByClassName('get-attachment').length == 0) {
spModal.open({
title: 'Attachment recommended',
message: 'You mentioned an error occurred, if possible please attach a screenshot of the error',
buttons: [{
label: 'Okay',
value: 'agree',
primary: true
}, {
label: 'Cancel',
value: 'disagree'
}]
}).then(function(result) {
// Both buttons clicked → NO submission
// User must click Submit button again
return false;
});
return false; // CRITICAL: Stop form submission immediately
}
// Only reaches here if attachment exists OR number != 'Yes'
return true;
}
💡 If my response helped, please mark it as correct ✅ and close the thread 🔒— this helps future readers find the solution faster! 🙏
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
13 hours ago
The script I shared is working fine and Output below
💡 If my response helped, please mark it as correct ✅ and close the thread 🔒— this helps future readers find the solution faster! 🙏
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
14 hours ago
Hello @Pritam Khude ,
This issue occurs because calling g_form.submit() inside an onSubmit Catalog Client Script triggers the onSubmit function again. Since the same condition is still true, the script opens the spModal repeatedly, causing a recursive submission loop and preventing the form from being submitted.
Additionally, returning true inside the spModal.then() callback does not affect the original onSubmit execution, because spModal.open() is asynchronous.
Another issue is that the spModal button configuration does not include a value attribute, which makes it harder to reliably determine which button the user clicked.
To resolve this, we must:
Use a flag variable to bypass validation during re-submit
Use button values in spModal
Avoid relying on return true inside the modal callback
var allowSubmit = false;
function onSubmit() {
if (allowSubmit) {
return true;
}
var errorAppear = g_form.getValue('gw_mi_did_any_errors_appear');
var hasAttachment = document.getElementsByClassName('get-attachment').length > 0;
if (errorAppear === 'Yes' && !hasAttachment) {
var opt = {
title: 'Attachment recommended',
message: 'You mentioned an error occurred. If possible, please attach a screenshot.',
buttons: [
{
label: 'Okay',
value: 'okay',
primary: true
},
{
label: 'Cancel',
value: 'cancel'
}
]
};
spModal.open(opt).then(function (result) {
if (result.value === 'cancel') {
allowSubmit = true;
g_form.submit();
}
});
return false; // stop original submit
}
return true;
}
If this helps you then mark it as helpful and accept as solution.
Regards,
Aditya,
Technical Consultant
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
13 hours ago
Would you mind sharing a small gif/video to showcase your above script is working fine?
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
