2012-08-28 4 views
7

캐럿 위치에 내용을 삽입하는 텍스트 영역이 있습니다 (덕분에 Tim Down's answer). 사용자가 버튼을 누를 때 내용을 삽입합니다. 그러나 버튼을 누르면 텍스트 영역의 포커스가 손실 된 것처럼 보입니다. 어떻게 캐럿의 위치가 동일하다면 포커스를 유지할 수 있습니까? 나는 evt.preventDefault().focusout()을 사용하는 줄을 생각하고있었습니다. 그게 도움이된다면.버튼을 눌렀을 때 요소가 포커스를 잃지 않게하려면?

답변

8

포커스가있는 요소로 이동하는 것을 멈추고 마우스 클릭이 일반적인 동작 (예 : click 단추)을 허용 할 수 없습니다. 단추와 같은 포커스를 지원하는 요소를 클릭하면 키보드 포커스가 표시됩니다.

제대로 완료되면 프로그래밍 방식으로 포커스를 다시 요소에 배치 할 수 있습니다. 제대로 수행되지 않으면 페이지의 유용성이 손상 될 수 있습니다.

데모 : http://jsfiddle.net/jfriend00/Ddffh/

+0

당신이 날 어떻게 말할 수 (또한 터치 이벤트를 작동합니다)? 미안하지만. – think123

+0

@ think123 - 답장 끝에 실습 데모를 추가했습니다. – jfriend00

+0

좋은 답변입니다. 마찬가지로, 적어도 버튼에 대해서는 "선택 취소 할 수없는"= "on"이 작동하는 것으로 나타났습니다. – think123

-1

당신은 쉽게 버튼 클릭 기능이 끝난으로 프로그래밍 텍스트 영역에 다시 초점을 적용하여이 작업을 수행 할 수 있습니다. 이렇게하면 매번 클릭 이벤트와 함께 포커스를 다시 얻을 수 있습니다.

1

mousedown 이벤트를 처리해야합니다. 다른 요소의 포커스를 잃기 전에 실행됩니다.

mousedown 이벤트 처리기에서 이벤트 전파 및 기본 동작을 방지하려면 false를 반환해야합니다.

return false; // on your mousedown event

http://jsfiddle.net/Ddffh/143/

관련 문제