Я использую платформу ServiceNow. Я пишу сценарий клиента каталога, чтобы проверить поля формы в изготовителе записей каталога.ServiceNow Script onSubmit не работает должным образом
Я прекращаю отправку формы с помощью return false, если проверка не проходит проверку.
Я проверил это, введя недопустимые данные (имя группы со специальными символами или уже существующее имя группы), и она улавливает проблему и показывает сообщение об ошибке. Я могу ввести неверные данные и отправить несколько раз, и он работает.
Однако вопрос:
Сценарий, кажется, «остановить» работает после того, как я первый ввести неверные данные и отправить, а затем я снова исправить данные нажмите кнопку отправки. Он просто сидит и ничего не делает. Я снова должен перезагрузить форму, что нежелательно.
Что происходит с потоком управления? Как я могу чисто остановить форму, если данные недействительны, но затем разрешить пользователю исправить ошибку и снова нажать кнопку отправки, чтобы продолжить?
Я могу сказать, что сценарий не запускается снова, потому что у меня появляется окно предупреждения, в котором говорится, что «запуск скриптов» выполняется каждый раз при запуске скрипта. Он просто прекращает работу в какой-то момент после подачи неверных данных сначала, а затем ввода некоторых действительных данных и нажатия submit.
function onSubmit() {
g_form.hideAllFieldMsgs('error');
alert("script run");
//Group Name contain letters numbers and dashes only
var group_name = g_form.getValue('u_group_name');
// Group name regular expression
var regGrpName = /^([A-Za-z0-9\-]+)$/;
// Check name against regular expression
if (regGrpName.test(group_name) == false) {
g_form.showFieldMsg('u_group_name', "Group Name must contain only letters, numbers or dashes. ", 'error');
//Do not submit
//g_form.submitted = false;
return false;
}
//Check if google group already exists
var rec = new GlideRecord('u_google_user_accounts');
rec.addQuery('u_account_email', new_group_email);
rec.query();
while (rec.next()) {
g_form.showFieldMsg('u_group_name',rec.u_account_email + " already exists as an account.",'error');
return false;
}
//Group Members Email List separated by commas
// Hide error message
//g_form.hideErrorBox('u_group_members');
var group_members = g_form.getValue('u_group_members');
// Comma separate list
var member_split = group_members.split(',');
// Loop over list of email addresses
for (var n = 0; n < member_split.length; n++) {
// Trim whitespace
var member_info = trim ? member_split[n].trim() : member_split[n];
// Email validation regular expression
var regEmail = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
// Check each item against regular expression
if (member_info.search(regEmail) == false) {
g_form.showFieldMsg('u_group_members', "Group Members contains an invalid email address. " + member_info, 'error');
//Do not submit
//g_form.submitted = false;
return false;
} else if (member_info.search(validRegExp) == true) {
g_form.setValue('u_group_members', group_members);
}
}
return true;
}
Вы видите какие-либо ошибки JavaScript на стороне клиента, которые вызывают на странице либо при первоначальной попытке отправки, либо в последующих попытках отправить после того, как страница не прошла проверку? – Bryan