Проверка полей после того, как пользователь нажимает кнопку формы в Service Now
Я работаю над формой заявки на изменение с двумя кнопками формы: "Отправить" и "Запросить одобрение". Отправить - это способ вставить запись в таблицу. Однако билет будет двигаться только вперед, когда пользователь нажмет "Запрос на одобрение".
Я хочу наложить определенные ограничения ТОЛЬКО, когда пользователь нажимает кнопку "Подтверждение запроса". Под ограничениями я подразумеваю побуждение пользователя заполнить запланированную дату начала, дату окончания. Однако такое сообщение не должно появляться, когда пользователь нажимает кнопку "Отправить".
Один из способов сделать это - создать условия для наглядности через действие пользовательского интерфейса. Но я хочу, чтобы кнопка была видна всегда. Пожалуйста помоги
1 ответ
Вы можете настроить действие UI "Запросить утверждение" для запуска на клиенте (флажок "Клиент"), установите для поля Onclick значение requestApproval(); а затем используйте следующий код в качестве руководства для вашего тела скрипта. Это позволяет вашему пользовательскому интерфейсу работать в два этапа. На клиенте, где вы можете написать свою логику проверки, и на сервере (запускаемом gsftSubmit), когда ваша логика проверки прошла успешно.
По умолчанию в системе есть несколько действий пользовательского интерфейса, использующих этот тип кода. Выполните поиск действий пользовательского интерфейса, где "Script содержит gsftSubmit", чтобы увидеть другие примеры.
function requestApproval(){
// Do your client side validation here
if (g_form.getValue('comments') == '') {
return false; //Abort submission if your validation fails
}
//Call the UI Action and skip the 'onclick' function
gsftSubmit(null, g_form.getFormElement(), 'request_approval');
// MUST call the 'Action name' set in this UI Action.
// Make sure this name doesn't conflict with an existing
// UI Action if this is a custom action.
}
//Code that runs without 'onclick'
//Ensure call to server-side function with no browser errors
if (typeof window == 'undefined')
serverResolve();
function serverResolve(){
change_request.state = 1;
// other server side actions you wish to take
}