【发布时间】:2015-08-27 08:28:31
【问题描述】:
好的,这应该是可行的——而且非常简单,只要知道如何获取 djFilteringSelect 对象的句柄。
用例:我已经接管了扩展现有 XPage 的请求,该 XPage 具有下拉值列表的功能,不仅在用户单击 djFilteringSelect 输入字段右侧的小箭头时,而且在用户单击只需点击该字段。此 XPage 的大部分初始条目都是在制造现场完成的(使用触摸屏 - 没有鼠标/键盘)。随后的处理由使用“普通”计算机的用户完成。
所以我尝试“捕捉”“click”、“mousedown”或“mouseup”事件。我可以做到这一点 - 但我无法掌握我知道的过滤选择有一个方法“openDropDown()”,它可能会做我需要做的事情......我也尝试过模拟按键事件“arrowdown”如果我这样做也会提供相同的体验...我什至尝试延迟按键事件并添加一些上下文 - 但没有任何效果。
所以这是我目前非常简单但不起作用的示例:
<xe:djFilteringSelect id="Antal" defaultValue="1">
<xp:selectItems id="selectItems13">
<xp:this.value><![CDATA[${javascript:var values=[];var i=0;while(i<=20){values.push(''+i++)};return values;}]]></xp:this.value>
</xp:selectItems>
<xp:selectItem itemLabel="20+"></xp:selectItem>
<xp:eventHandler event="onKeyUp" submit="false">
<xe:this.script><![CDATA[console.log("keyUp=" + thisEvent.keyCode)]]></xe:this.script>
</xp:eventHandler>
<xp:eventHandler event="onMouseDown" submit="false">
<xe:this.script><;
/// Hmmmm... not working
keyboardEvent.currentTarget = ct;
keyboardEvent.srcElement = se;
keyboardEvent.toElement = te;
console.log('Fire arrow down key...');
document.dispatchEvent(keyboardEvent);
},200);
]]></xe:this.script>
</xp:eventHandler></xe:djFilteringSelect>
因此,任何想法都会受到赞赏 - 尤其是制造站点中的用户:-)
【问题讨论】:
-
是否可以为您的触摸屏用户使用不同类型的控件?我相信您会找到一款完全符合您和您的用户期望的产品
-
嗯.... 是的。虽然不理想,因为它们“看起来像”普通计算机。不确定我如何确定他们是否使用触摸屏 - 但也值得尝试遵循这条路线。谢谢!
-
你玩过 9.0.1 的 deviceBean 功能了吗?也许这可能有助于区分您的设备。此外,对于一些移动控制事件,例如“xe:singlePageApp”或“xe:appPage”,您手头还有其他有用的事件处理程序。祝你好运
-
嗯,这些电脑是普通电脑——只是带有触摸屏和“软键盘”。所以不是真正的 SPA(单页应用程序)的候选人。实际上,我们只需要几个字段就可以更轻松地用手指“点击”——而不是为部分用户重新设计页面;-)
标签: javascript dojo xpages