gpt4 book ai didi

xpages - 按 ENTER 提交搜索在 IE 中不起作用

转载 作者:行者123 更新时间:2023-12-02 04:35:53 25 4
gpt4 key购买 nike

要执行全文搜索,用户希望将他们的查询简单地输入到一个简单的 inputText 中。然后,一旦他们按下 ENTER,搜索本身就会启动。

目前我们尝试这样解决:

  • inputText 绑定(bind)到一个 sessionScope 变量 myQuery
  • 输入也有一个 OpenPage Action 绑定(bind)到它的 onchange 事件
  • 要打开的页面包含一个 viewPanel,其中包含一个绑定(bind)到我们的 sessionScope 变量的搜索过滤器,以及一些更多的 FT 过滤字段。

这在 Firefox 和 Chrome 中工作正常但在 IE 中不行;显然 IE 没有将 ENTER 键识别为 onchange 触发器。

所以我尝试使用控件的 onkeyup 事件记录和分析击键,使用类似的东西

var q=sessionScope.get("myQuery");
return q.charCodeAt(q.length-1);

适用于所有标准字符,但不适用于 ENTER 键(我预计会收到代码 13)。

我目前确实有一些解决方法,在控件的 onkeyup 事件中使用 CSJS 代码,如下所示:

if(event.keyCode===13){
var p=location.pathname.split("/");
p.pop();
location.replace(p.join("/") + "/search.xsp");
}

但这有一些副作用,有可能使事情变得更复杂,而且感觉有点像一些 hack。所以我更愿意使用服务器端脚本来解决它。

问题是:

  • 有没有办法捕获 ENTER 击键以便我们对其使用react?
  • 还是我们走错了路?

最佳答案

在 IE 中,onchange 事件直到输入失去焦点才会触发:http://komlenic.com/231/internet-explorer-onchange-on-enter/

因此您可以使用一些 CSJS 来捕捉 IE 中的 ENTER 按下,并使用 .blur() 方法从输入中放下焦点,这将依次触发 onchange 事件

我试过的一个似乎有效的简单示例:

<xp:inputText id="inputText2" value="#{document1.text1}">
<xp:eventHandler event="onkeyup" submit="false">
<xp:this.script><![CDATA[
var kc = thisEvent.keyCode?thisEvent.keyCode:"";
if(kc != "" && kc == "13") {
var input = dojo.byId("#{id:inputText2}");
input.blur();
}]]>
</xp:this.script>
</xp:eventHandler>
<xp:eventHandler event="onchange" submit="true" refreshMode="complete">
<xp:this.action>
<xp:openPage name="/formInput.xsp"></xp:openPage>
</xp:this.action>
</xp:eventHandler>
</xp:inputText>

关于xpages - 按 ENTER 提交搜索在 IE 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21994495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com