2014-02-24 1 views
1

전체 텍스트 검색을 수행하려면 사용자는 간단히 쿼리를 간단한 inputText에 입력하고 싶습니다. .ENTER에서 검색을 제출하면 IE에서 작동하지 않습니다

는 InputText]를가 myQuery 변수 sessionScope에 바인딩
  • 입력이 또한있다 : 그런 다음 즉시 자체에 걷어차해야 검색을 Enter 키를 누르로

    현재 우리는 다음과 같이 그것을 해결하기 위해 시도 onchange 이벤트
  • 에 바인딩 된 OpenPage 작업은 sessionPope 변수에 바인딩 된 검색 필터와 몇 가지 FT 필터링 필드가있는 viewPanel을 포함합니다.

Firefox 및 Chrome의 경우 에서는 제대로 작동하지만 IE에는없는 경우; 분명히 IE는 Enter 키를 onchange 트리거로 인식하지 못합니다.

그래서 내가 아니라 내가 코드를받을 것으로 예상했을 경우 (Enter 키를 들면, 기록 및 모든 표준 문자

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

작품 미세 같은 컨트롤의 onkeyup 이벤트 사용하여 뭔가를 사용하여 키 입력을 분석하는 시도 13).

나는 현재와 같이 컨트롤의 onKeyUp에 이벤트에 CSJS 코드를 사용하여 해결의 어떤 종류가 있습니까 :

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

하지만이 일을 더 복잡하게 만드는 몇 가지 가능성이 부작용을 가지고 있으며, 그것은 느낌 약간의 해킹과 같은 비트. 그래서 나는 서버 측 스크립팅을 사용하여 그것을 해결하기를 원합니다.

질문은 우리가 반응 할 수 있도록 키 스트로크를 입력 캡처 할 수있는 방법이

  • 가?
  • 여기 또는 완전히 잘못된 경로에 있습니다. 입력 포커스를 잃을 때까지
+1

아마도이 사이트가 당신을 도와줍니다 : 차례로 onchange 이벤트

내가 일을 보인다 밖으로 시도 빠른 예를 트리거합니다 http://stackoverflow.com/questions/9145536/xpages-onkeypress-event-not-trigerring-click-properly – adminfd

답변

4

는 IE에서 onchange 이벤트는 트리거되지 않습니다,

그래서 당신이 IE에서 Enter 키를 누릅니다을 잡기 위해 몇 가지 CSJS을 사용하고 .blur() 방법을 사용하여 입력에서 초점을 드롭 할 수 http://komlenic.com/231/internet-explorer-onchange-on-enter/있는

<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> 
+0

좋은 설명, 많이 감사합니다. –

관련 문제