2014-11-18 3 views
0

이것은 ExtJs 4.2 Charts와 관련이 있습니다.extjs 차트에서 keypress 이벤트를 얻는 방법

사용자가 ctrl 키 + 마우스 클릭으로 열 선택을 누르는 경우에만 열 차트에서 여러 열을 선택해야 할 때 붙어 있습니다. 그래서, 차트의 itemclick 이벤트에서 컨트롤 키 프레스 이벤트를 캡처하는 방법을 찾지 못했습니다.

제안에 보내 주시기 바랍니다

...

답변

0

이것은 당신이 취할 수있는 방향에서 촬영이 아닌 확실한 대답이다.

작업중인 패널 또는 뷰포트에 몇 개의 수신기를 추가하고 keydown 이벤트 및 keyup 이벤트를 추가 할 수 있는지, 그 작동 여부를 확신하지 못하는 경우 DOM에 추가 할 수 있습니다 모델 창. 내가 여기에서 보는 문제는 당신이 먼저 무엇인가에 집중해야한다는 것인데, 아마도 윈도우의 초점을 잡을 것입니다. 만약 당신이이 리스너를 클릭하면 실제 차트에 놓을 수 있습니다. 먼저 차트에서 키를 선택한 다음 다시 클릭하면 직관적이지 않고 생각할 수있는 많은 동작이 나타납니다.

그런 다음 키를 누를 때 전역 변수를 true로 설정하고 위로 키를 누르면 false로 되돌립니다.

그런 다음 itemmousedown 이벤트에서 차트 시리즈를 만들면 변수를 읽고 의도 한대로 사용할 수 있습니다. 여기

는 리스너가 나는 그것이 잘 작동하는 솔루션 있지만 해결의 그 종류를 발견

series: [{ 
    type: 'column', 
    ... 
    listeners: { 
     itemmousedown: function(item, eOpts) { 
      .... // get your global variable here. 
      console.log(item); 
      console.log(eOpts); 
     } 
    }, 
+0

답장을 보내 주셔서 감사합니다. 사실 나는 그것을 시도하고 포함 패널에 이벤트를 추가 할 수 있지만 그런 다음 keypress 이벤트 패널을 사용하는 동안 렌더링되는 div 요소에서 트리거되지 않습니다 HTML 함께 기본적인 문제를 발견했다. 어쨌든 나는 아래에서 설명 할 해결책을 찾았다. – Amit

+0

oyu가 솔루션을 생각해 내면 그것을 보길 좋아할 것입니다. 아마도 그걸 sencha 바이올린으로 던질 수 있습니다. –

+0

Brian H, 내 솔루션은 위의 게시물에서 설명한 내 원래 접근 방식을 기반으로하고 있으며 지금까지 제대로 작동 중입니다 ... – Amit

0

과 같아야 것입니다. 여기

var bIsControlkeyPressed=false; 
 

 
function setCtrlKey(event){ 
 
    if (event.ctrlKey) { 
 
     bIsControlkeyPressed=true; 
 
    }else{ 
 
     bIsControlkeyPressed=false; 
 
    } 
 
    alert(bIsControlkeyPressed) 
 
}
<body onmousedown = "setCtrlKey(event)">hello</body>

당신이,이 코드는 글로벌 플래그를 설정합니다 페이지의 아무 곳 (예 : '안녕하세요'이 경우에는 신체 부분)을 클릭하면 ... 코드 조각입니다 ctrl 키가 눌러 진 경우는 true, 그렇지 않은 경우는 false가 설정됩니다. 나는 이것을 할 수있는 다른 방법이 있다는 것을 알고 있지만이 접근법은 IE8에서도 작동합니다 :)

관련 문제