2016-07-20 1 views
4

입력 필드의 모든 텍스트를 선택하는 데 특정 문제가 발생했습니다. 각도의 ng 포커스를 사용하여 컨트롤러의 함수를 호출하여 필드의 모든 텍스트를 선택합니다.Microsoft Edge에서 포커스가있는 모든 텍스트 입력 내용 선택

function selectAllTextOnFocus($event) { 
    $event.target.select(); 
} 

이 입력 필드에 텍스트를 선택하지 않습니다 마이크로 소프트 가장자리를 제외한 모든 브라우저에서 잘 작동합니다.

입력 필드의 첫 번째 선택을 제외하고는 다른 jquery 솔루션을 사용해 보았습니다. 그 후 그것은 의도 한대로 작동하고 모든 텍스트를 선택합니다.

$('input').on('focus', function (e) { 
    $(this).one('mouseup', function() { 
     $(this).select(); 
     return false; 
    }).select(); 
}); 

가장자리와 관련된 알려진 문제입니까? 아니면 뭔가 빠졌습니까?

답변

3

저는 Microsoft Edge 팀의 엔지니어이며, 당신이 말하는 이슈를 확인하십시오. 당분간, 당신은 잠시 후 선택 방법을 호출 할 수 있습니다

function selectAllTextOnFocus($event) { 
    // See https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8229660/ 
    if (navigator.userAgent.match(/Edge\/(13|14)/)) { 
     return setTimeout($event.target.select.bind($event.target), 10) 
    } 
    $event.target.select(); 
} 

테스트는 여기에 접근 모두 : https://jsfiddle.net/jonathansampson/xe9x9s7b/

내가 추적 http://bugs.microsoftedge.coma public bug을 제기 할 자유를 촬영했습니다.

+0

가장자리의 문제를 해결하는 데는 효과가 있지만 여러 입력 필드가있는 경우 크롬에서 예상치 못한 문제가 발생합니다. 선택한 필드가 있고 다른 창을 클릭 한 다음 다른 필드를 선택하면 Chrome으로 다시 클릭 할 때 두 필드의 내용을 모두 선택하려고 시도합니다. 이 문제를 재현 할 수있는 [plunker] (https://plnkr.co/edit/uLdJu8yl1e0FOOz1yAUD?p=preview)가 있습니다. 신속한 응답을 보내 주시고 버그를 제출해 주셔서 감사합니다. 나는 그것을 계속 지켜 볼 것이다. –

+0

@SpencerMeyer 정말 대단합니다. 지금은이 틈에 빠지지 않도록 약간의 사용자 에이전트 검색을 사용할 수 있습니다. 나는 대답을 업데이트 할 것이다. – Sampson

+0

나는 해결책이 마음에 들지 않아 모든 브라우저에서 작동하는'setSelectionRange'를 사용하여 jsfiddle을 만들었습니다 : https://jsfiddle.net/xe9x9s7b/11/ 또한 10ms는 시간 초과가 필요 없습니다 , 0은 괜찮습니다. 브라우저에서 큐에 넣기 만하면됩니다. – Nicolas

관련 문제