【问题标题】:How can I get rid of the click off event on an autopicker with tags in a moodle form?如何摆脱带有moodle形式标签的自动选择器上的点击关闭事件?
【发布时间】:2019-11-13 17:54:30
【问题描述】:
我在 Moodle 表单上使用来自 Moodle 表单 API 的自动完成元素。我使用列表预加载自动完成元素,将多个设置为 true,并将标签设置为 true。如果元素尚不存在,这允许用户将元素添加到列表中。用户可以通过键入文本并单击输入或单击自动完成元素的关闭来添加元素。此事件将获取自动完成中的任何文本并将其添加到列表中。我不希望每次用户输入文本并单击自动完成时都创建一个元素,而只是在用户输入文本并单击输入时创建一个元素。有没有办法使用 Moodle 的表单 API 自动完成来做到这一点,或者我应该以不同的方式来解决这个问题?
【问题讨论】:
标签:
php
autocomplete
moodle
moodle-api
【解决方案1】:
这个问题没有简单的解决方案。但是我相信我已经开始找到一种方法来做你想做的事。如果您进入lib\amd\src\form-autocomplete.js 并向下查看第 728 行(使用 Moodle 3.7 版),您将看到以下行:
return createItem(options, state, originalSelect);
当自动选择器失去焦点(点击关闭)时,此行会触发创建新标签。如果您注释掉这一行,则该单击关闭事件将不再触发该创建。但是必须注意,这将导致它在您的整个站点中被禁用,对于所有自动选择器。
显然我不建议这样做,因为它是 Moodle 的核心功能,它很可能会在您更新 Moodle 后立即恢复,从而导致许多潜在的问题。然而,由于这个问题似乎没有引起太多关注,我想添加这个只是为了让你和/或其他人从某个地方开始查看这个问题。
我目前正在考虑创建autocomplete.php(mform 用于自动选择器的 php 元素)的副本,并调整其调用以使用单独的、稍加调整的lib\amd\src\form-autocomplete.js 版本。我会向您介绍我个人取得的任何进展,但希望这些信息可以为您或本网站上的其他开发人员提供帮助。