dijit 对话框中的 Select2 控件 - 无法聚焦
Posted
技术标签:
【中文标题】dijit 对话框中的 Select2 控件 - 无法聚焦【英文标题】:Select2 control in dijit dialog - unable to focus 【发布时间】:2014-10-09 19:34:34 【问题描述】:从 Domino 9.01FP2 开始,您不能再专注于 xe:dialog 中的 Select2 控件。 它似乎是由于在 FP2 之前工作的 dojo 版本发生了变化。
我知道根本原因是 dijit 对话框的布局管理器(或底层)阻止了对模态之外的事物的关注,并且 select2 下拉菜单附加在页面末尾。
在将它与 jquery modal 一起使用时,有记录的修复方法,例如
$.fn.modal.Constructor.prototype.enforceFocus = function() ;
但我找不到任何等效的 dojo 修复方法,即将 select2 下拉列表注册为允许获得焦点的内容。
注意:我认为 dojo 中的这个“修复”可能导致了这个问题 https://bugs.dojotoolkit.org/ticket/15370
我想到的一个潜在解决方案是使用 select2 的 open 事件将其移动到对话框中,但我没有运气。
是否有人将 select2 与 dojo 一起使用,或者这只是一个奇怪的用例,因为大多数人会使用 jquery? (在 xpages 之外)
谢谢!
【问题讨论】:
【参考方案1】:经过长时间调试 Dojo,我设法让它工作。 作为软糖,您可以将其放入您的 xe:dialog 代码中
<xe:this.onShow><![CDATA[//fudge to make select2 work
dijit.byId('#id:myDialog')._fadeOutDeferred = true; ]]></xe:this.onShow>
Dojo 允许节点在以下情况下获得焦点:
-
它们是对话框的子对象
他们有一个 digitPopup 类
_fadeOutDeferred 属性设置为 true
这具有使对话框无模式的副作用,因为您可以单击弹出窗口之外的任何内容,但至少 select2 控件可以再次工作:)
【讨论】:
你拯救了我的一天 :) 我遇到了同样的问题,不确定 IBM 的 POODLE HF 发生了什么变化,但是,我的 select2 字段没有得到关注。过去两周我一直在尝试解决这个问题。谢谢。 @PSolano 很高兴它有帮助! 谢谢!!!刚刚花了几天时间让 Select2 工作,然后当我把它放在对话框中时它就死了,这救了我!【参考方案2】:尝试将对话框的“自动对焦”属性设置为 false。
【讨论】:
不幸的是,这不起作用,因为问题是当您尝试专注于 select2 控件时,而不是在对话框首次弹出时以上是关于dijit 对话框中的 Select2 控件 - 无法聚焦的主要内容,如果未能解决你的问题,请参考以下文章