javascript - 如何注册到关闭按钮元素的 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 中,即使我想简单地发送潜在丢失数据消息的警报
感谢您对此的帮助
解决方案
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 */ });
推荐阅读
- c++ - 不可能的快速委托是 std::function 的合适替代方案吗?
- asp.net - 如何在 Blazor 应用程序的 docker 命令中更新连接链 (appsetting.json)?
- c# - 如何检查objectlistview c#中的所有项目?
- angular - Typescript 接口 - 字段类型:MyInterface | 字符串,尝试访问属性时不起作用
- java - 如何将数组作为参数传递给函数,以及与存储在数组中的对象具有相同数据类型的对象?
- domain-driven-design - 导致子实体更改的聚合根上的操作是否应该引发子域事件?
- laravel - Carousel 不起作用 bootstrap 5. 有人可以帮助我吗?
- python - 如何在一个单词被翻译后让我的 Python 莫尔斯电码解码器分开?
- python - 我在尝试安装最新版本的 sktime 时遇到错误
- rabbitmq - MassTransit rabbitMq - 为什么我的所有消息都被跳过