首页 > 解决方案 > 如何注册到关闭按钮元素的 onClick 事件

问题描述

我在 serviceNow 中使用 UI 操作来调用 GlildeModalForm 弹出窗口。该窗口有一个 X(关闭按钮),当用户按下该按钮时我需要捕捉它。我对该按钮单击没有任何反馈,需要抓住它

我在 ServiceNow 社区上看到了一些示例,您可以在其中注册一些回调函数,但它仅在提交表单后使用。

var modalForm = new GlideModalForm('Create User Member' , tableName );
modalForm.setOnloadCallback(formOnLoadCallback);
modalForm.setCompletionCallback(formAfterSubmitCallback);
modalForm.render();

function formOnLoadCallback() {
//Access GlideModal g_form to set field for the new record
var d_form = window.frames["dialog_frame"].g_form;
d_form.setValue('field', g_form.getValue('field'));
d_form.setValue('field', g_form.getValue('field'));
}

function formAfterSubmitCallback(action_verb, sys_id, table, displayValue) {
//Get the newly created record sys_id and then set e.g a value to the starting record
g_form.setValue('field', sys_id);
//Save the record
g_form.save();
}

通过使用浏览器的元素检查器,我可以看到关闭按钮的定义如下:

<button data-dismiss="GlideModal" class="btn btn-icon close icon-cross" 
id="x_58872_needit_cascadesequence_closemodal">                 <span 
class="sr-only">Close</span>                
</button>

我需要从上面的脚本中找到该按钮,然后注册到它的 onClick,然后在 onClick 中,即使我想简单地发送潜在丢失数据消息的警报

感谢您对此的帮助

标签: javascriptservicenow

解决方案


SerivceNowGlideModalForm扩展GlideModal它支持通过该on方法注册事件。有 2 个受支持的事件可能适用于您想要的:

  • closeconfirm: 被destroy方法调用,可用于中止销毁
  • beforeclose: 一旦窗口已经被隐藏时调用

我认为您可以只使用 closeconfirm 事件来知道何时关闭,您不一定需要关心中止操作,它会在用户单击按钮后立即触发,但在窗口被删除之前。然而,值得注意的是,当用户单击“关闭”按钮(不是 X)时,这可能也会触发,该按钮可以通过模式首选项选择性地显示:myGlideModal.setPreference('sysparm_button_close', 'Close')

这是一个粗略的例子:

var myGlideModal = new GlideModal(...);
dd.on("beforeclose", function (){ /* do stuff, maybe return false to cancel */ });

推荐阅读