我想创建一个动态动作,当设置了另一个项目(自动完成文本字段)的值时,该动作将为页面上的项目设置值。 过程就是这样:
我无法找到在选择其中一个建议值时执行的事件。这样,一旦选择了建议值,我就无法看到如何读取自动填充字段的值。
更改事件不符合我的需要,当选择一个建议值时,它不会执行。
答案 0 :(得分:4)
我遇到了同样的问题,找到了这个链接:https://community.oracle.com/thread/2130716?tstart=0并按如下方式修改了我的动态操作以获得所需的行为:
事件= Custom
自定义事件= result
从链接:
问题似乎是浏览器的默认行为。当你 在自动完成中输入一些文本,然后显示列表 焦点仍然在文本字段中。此外,如果您使用键盘游标 要选择一个条目,焦点仍将在文本字段中。这就是原因 文本字段的更改事件不会触发。只有你才会开火 离开现场。
另一方面,如果您使用鼠标选择一个条目,浏览器 将暂时从文本字段中删除焦点(在...之前) JavaScript代码将焦点放回去),因为你在外面点击了 场。但这足以让浏览器触发更改 事件
我查看了底层jQuery自动完成的文档 小部件 (http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/)和 实际上有一个名为"结果"如果一个可以捕获 从下拉列表中选择条目。
答案 1 :(得分:1)
尝试“失去焦点”作为事件。当您离开自动填充字段时,它将触发您的动态操作,即您的curosr被移动到另一个字段。
答案 2 :(得分:1)
这可能取决于您使用的APEX版本。
对于18.2,由于底层组件基于Oracle JET的“ inputSearch”组件,因此需要使用以下configure来捕获具有自动完成功能的 text的选择更改事件:
事件:自定义
自定义事件: ojupdate
参考: https://docs.oracle.com/cd/E87657_01/jet/reference-jet/oj.ojInputSearch.html#event:optionChange
答案 3 :(得分:0)
我打开浏览器控制台,然后转向ApEx Developer工具栏调试,发现相反,"更改"用户在其中一个选项上单击鼠标时会触发事件 。但是,如果用户使用键盘(键入几个字母缩小列表,然后使用向下箭头键达到所需的值,然后按回车键),那么更改事件不会触发,就像你一样说。
此外:即使您通过鼠标单击启动的更改事件获得了返回的值,该值也不是自动完成的完整且有效的值,而是可能的部分和错误的值就像用户输入一样。即,更改事件提交的值在自动完成替换之前。
@VincentDeelen给出的答案是我能看到的最好的选择,尽管它并没有给出那个"即时同步性#34;感觉。你可以使用" Key Down"事件,但要小心。当每次击键(包括更正)导致动态操作的另一次触发时,您可能会获得非常多的Web和数据流量。
测试环境:使用Chrome 33和IE 9的ApEx 4.2.3。
P.S。这也许值得一提到ApEx开发团队。
答案 4 :(得分:0)
它不是很理想,但你可以使用onfocus()。我认为,我正在寻找同样的事情,即在选择建议值时触发的自定义事件。我还没有找到它,但这是我现在的解决方法。它将运行您最初为此创建的任何函数,但没有任何值,但一旦选择,它将返回焦点并再次使用正确的值运行该函数。就像我说的那样,不理想,但它有效。
答案 5 :(得分:0)
答案 6 :(得分:0)
Oracle apex 19现在在创建称为“更新[具有自动完成功能的文本字段]”的动态操作时添加了“组件事件”-从列表中选择一个值时将触发此操作,而在离开该字段时不会触发(类似于添加自定义事件“ ojupdate”)。