从ApEx中的自动填充文本字段获取值

时间:2013-10-09 08:45:22

标签: oracle autocomplete oracle-apex

我想创建一个动态动作,当设置了另一个项目(自动完成文本字段)的值时,该动作将为页面上的项目设置值。 过程就是这样:

  1. 点击自动填充字段
  2. 输入一些字母
  3. 选择其中一个建议值
  4. 我无法找到在选择其中一个建议值时执行的事件。这样,一旦选择了建议值,我就无法看到如何读取自动填充字段的值。

    更改事件不符合我的需要,当选择一个建议值时,它不会执行。

7 个答案:

答案 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)

杰弗里坎普是对的。您可以使用自定义事件结果通过动态操作进行设置。您还可以使用document.getElementById(" {id}")在页面加载中注册它.addEventListener(" result",{function});或$("#{id}")。结果(函数(事件,数据,格式化){//这里的东西});.

答案 6 :(得分:0)

Oracle apex 19现在在创建称为“更新[具有自动完成功能的文本字段]”的动态操作时添加了“组件事件”-从列表中选择一个值时将触发此操作,而在离开该字段时不会触发(类似于添加自定义事件“ ojupdate”)。