2016-02-17 95 views
0

我有一個搜索輸入字段,並且想要在用戶在搜索短語中輸入後按Enter鍵來激活搜索。我也有一個鏈接控件,讓SSJS重定向到另一個XPage(並且會添加一些使用SSJS的參數,因此只需使用CSJS打開另一個頁面不是一種選擇)。這在Chrome中效果很好,但在Firefox中什麼都不做。任何人有任何建議?點擊輸入字段中的鍵入事件的鏈接

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"> 
<xp:br></xp:br> 
<xp:br></xp:br> 
<xp:br></xp:br> 
<xp:br></xp:br> 
<xp:inputText id="inputText1" style="width:142.0px"> 
    <xp:eventHandler 
     event="onkeyup" 
     submit="false"> 
     <xp:this.script><![CDATA[if (typeof thisEvent == 'undefined' &&  window.event) { thisEvent = window.event; } 
if (thisEvent.keyCode == dojo.keys.ENTER) 
{ 
dojo.byId("#{id:searchButton}").click(); 
thisEvent.preventDefault(); 
}]]></xp:this.script> 
    </xp:eventHandler></xp:inputText> 
<xp:link 
    escape="true" 
    text="Search" 
    id="searchButton"> 
    <xp:eventHandler 
     event="onclick" 
     submit="true" 
     refreshMode="complete" 
     disableValidators="true"> 
     <xp:this.action><![CDATA[# {javascript:context.redirectToPage("search.xsp");}]]></xp:this.action> 
    </xp:eventHandler> 
</xp:link></xp:view> 

回答

1

我預期在Firefox的作​​品類似的功能。不同的是,我使用onkeypress事件代替的onkeyup的:

<xp:inputText id="searchName" value="#{viewScope.searchName}"> 
    <xp:eventHandler event="onkeypress" submit="false"> 
     <xp:this.script><![CDATA[ 
      if (typeof thisEvent == 'undefined' && window.event) { thisEvent = window.event; } 
      if (thisEvent.keyCode == dojo.keys.ENTER) 
      { 
       dojo.byId("#{id:searchButton}").click(); 
       thisEvent.preventDefault(); 
      } 
     ]]></xp:this.script> 
    </xp:eventHandler> 
</xp:inputText> 
+0

感謝,這似乎工作,奇怪,我得到的線。點擊之前,當我有這樣的輸出到瀏覽器控制檯一些調試代碼。我將不得不在真實應用程序中嘗試。 – Howard

+0

類似地,在ExtLib和Bluemix樣板文件的Todo示例應用程序中,在simpleLayout自定義控件的登錄下拉列表中,輸入字段捕獲輸入密鑰並在按下時執行登錄。他們使用onkeypress按照建議,似乎在Chrome/Firefox上工作正常 –

+0

感謝Brian和Per!很高興有一個簡單的修復! – Howard