2013-06-17 4 views
0

입력 영역의 문자 시퀀스가 ​​"aeu"와 같이 정의 된 시퀀스와 일치하면 텍스트 영역이 활성 상태 (이 필드에 키 스토어를 입력 중임) 그런 다음 에 포커스를 설정하고 버튼을 클릭하여을 클릭합니다.활성 상태에서 텍스트 영역에서 포커스를 제거하는 방법

참고 : 키보드 숏컷을 처리하기 위해 쥐덫 플러그인을 사용하고 있습니다. https://github.com/ccampbell/mousetrap/blob/master/mousetrap.min.js

데모 : 당신은 데모 페이지에서 볼 수 있듯이 http://jsfiddle.net/PqXWJ/5/

, 나는 텍스트 영역에서 포커스를 제거 할 수 없습니다, blur()trigger('blur')을 시도했지만했다.

$('textarea').on('keyup', function() { 
    if (this.value === 'enter') { 
     $(this).blur(); 
    } 
}); 

데모 ---->http://jsfiddle.net/PqXWJ/5/

+0

블러 해낼한다. 마우스 트랩 플러그인이 키 입력을 포착하지 못하고 있습니다. –

+0

초점이 텍스트 영역에 없으면 쥐덫 플러그인이 잘 작동합니다. –

+0

오른쪽. 초점이 텍스트 영역에있는 동안, 키 누르기 키 및 keydown 이벤트가 쥐덫 플러그인이 작동하는 데 필요한 문서에 도달하지 못합니다. –

답변

3

내가 사용되는 라이브러리가 무엇인지 확실하지 오전하지만 난 당신이 바인딩을 몇 가지 간단한 jQuery를 이벤트를 사용하여 원하는 기능을 가지고 -

+0

시작이지만 정확히 내가 원하는 것은 아닙니다. 텍스트 영역은 텍스트 입력 필드와 다릅니다. 필자의 경우 (textarea), 텍스트 영역에 "aeu"문자열이 있는지 확인하기 위해 코드를 수정해야한다고 생각합니다. –

+0

이 코드는 모든 입력 유형에서 작동합니다. 문자열 파싱이나 정규 표현식을 사용하면보다 구체적으로 선택을 할 수 있습니다. – chockleyc

+1

편집 된 답변을 참조하십시오. 나는 그것이 귀하의 우려를 해결한다고 생각합니다. – chockleyc

1

당신은 플러그인없이 그렇게 할 수 있습니다.

$('#text').keyup(function() { 
    if ($(this).val() === 'aeu') $(this).blur(); 
    $('#myBtnId').click(); 
}); 

여기는 jsFiddle의 예입니다.

UPDATE : 여기

원하는 문자열 전에 입력 할 수있는 텍스트 영역을 사용하고있는 모든 문자를 허용 재 작업 한 예이다. Example

업데이트 2 :

추가 요청한 버튼 기능. 건배!

jsFiddle

0

나는 이것이 당신이 사용하는

<textarea id="upcinput"></textarea> 
<p>Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will un <a id="exception-btn">click here</a></p> 

$('#upcinput').keyup(function() { 
if ($(this).val() === 'lorem ipsum') { 
    $(this).blur(); 
    $('#exception-btn').click(); 
} 
}); 

http://jsfiddle.net/ZYJxq/4/

0

쥐덫 플러그인을 찾고 수 있습니다 어떤 생각이 같은 때문에하지만, 텍스트 영역에 버그가 보인다 쉬운 일이지만 깨진 플러그인을 고치는 것보다 내 자신을 구르는 것이 더 빠를 것입니다.

http://jsfiddle.net/PqXWJ/18/

var sequence = [], targetsequence = [65,69,85,13]; 
$(document).on("keyup",function(e) { 
    if (e.which == targetsequence[sequence.length]) { 
     sequence.push(e.which); 
     if (sequence.length == targetsequence.length) { 
      alert("Correct Sequence!"); 
      $("#upcinput").blur(); 
      sequence = []; 
     } 
    } 
    else { 
     sequence = []; 
    } 
}); 
관련 문제