iOS 장치 (예 : iPhone, 모바일 Safari를 실행하는 iPad)에서 입력 필드의 텍스트를 프로그래밍 방식으로 어떻게 선택합니까?
일반적으로 요소 에서 .select()
함수 를 호출하는 것으로 충분 <input ... />
하지만 이러한 장치에서는 작동하지 않습니다. 커서는 선택하지 않고 기존 항목의 끝에 남게됩니다.
iOS 장치 (예 : iPhone, 모바일 Safari를 실행하는 iPad)에서 입력 필드의 텍스트를 프로그래밍 방식으로 어떻게 선택합니까?
일반적으로 요소 에서 .select()
함수 를 호출하는 것으로 충분 <input ... />
하지만 이러한 장치에서는 작동하지 않습니다. 커서는 선택하지 않고 기존 항목의 끝에 남게됩니다.
답변:
input.setSelectionRange(0, 9999);
.focus()
호출하기 전에 입력을 트리거 한 경우에만 저에게 효과적 input.setSelectionRange
이었습니다. focus
입력 에서 이벤트를 수신 하는 경우 무한 루프를 고려해야합니다.
readonly
속성이 설정된 경우 텍스트 영역에서는 작동하지 않습니다 .
이 스레드의 어떤 것도 나를 위해 일하지 않았습니다. 다음은 내 iPad에서 작동하는 것입니다.
// t is the input field
setTimeout(function() {
t.setSelectionRange(0, 9999);
}, 1);
부정적인 것을 증명하기는 어렵지만 제 연구에 따르면 이것이 모바일 사파리의 버그라고합니다.
focus ()는 어느 정도 작동합니다. 성공하려면 두 번 이상의 탭이 필요할 수 있으며 탭 자체가 필드를 제공하므로 해당 필드에 대한 사용자 탭에 응답하려는 경우에는 필요하지 않습니다. 초점. 불행히도 select () 는 단순히 Mobile Safari에서 작동하지 않습니다.
가장 좋은 방법은 Apple 의 버그 보고서 일 수 있습니다 .
이 바이올린을보십시오 : (입력 상자에 텍스트를 입력하고 '텍스트 선택'을 클릭하십시오)
내 iPod (5 세대 iOS6.0.1)의 입력 상자에서 텍스트를 선택하고 키보드를 열고 잘라 내기 / 복사 / 제안 ... 메뉴도 표시합니다.
일반 자바 스크립트 사용. jQuery로 이것을 시도하지 않았습니다.
document.getElementById("p1").selectionStart = 0
document.getElementById("p1").selectionEnd = 999
숫자 999는 샘플 일뿐입니다. 이 숫자를 선택하려는 문자 수로 설정해야합니다.
최신 정보:
마지막 2 개의 경우 input
요소 에서 클릭 이벤트를 트리거하여 실험 할 수 있습니다.
업데이트 : (2013 년 7 월 10 일)
업데이트 : (2013 년 11 월 14 일)
.selectionStart
및 .selectionEnd
수행 작업을.업데이트 : (2015 년 1 월 15 일)
<input/>
의을 탭하고 있다고 생각했을 때 , 아이 패드는 내가 jsfiddle의“CSS”창 (내가 입력 한 모든 것이 보이지 않는 곳)에서 탭하고 있다고 생각했다. 탭이 올바른 위치로 이동하면 <input/>
iOS-7.0.3에서 "텍스트 선택"버튼이 완벽하게 작동합니다. :-).
죄송합니다. 이전 게시물에서 Javascript로 답변을 원한다는 것을 암시하는 Javascript를 알지 못했습니다.
원하는 것을 얻으려면 있는 UIWebView 와 자바 스크립트 , 나는 일에 그것을 얻을 함께 정보의 두 가지 중요한 부분을 긁어 냈다. 모바일 브라우저에 대해 잘 모르겠습니다.
element.setSelectionRange(0,9999);
우리가 원하는 것을한다
mouseUp 이벤트가 선택을 취소합니다.
따라서 (Prototype 사용) :
input.observe ( 'focus', function () { this.setSelectionRange (0, 9999); }); input.observe ( 'mouseup', function (event) { event.stop (); });
트릭을 수행합니다.
매트
$("input").focus(function () { this.setSelectionRange(0, 9999); return false; } ).mouseup( function () { return false; });
focusin
, 아이폰 OS 7 일이 대신 초점의
포커스가 작동하는 것처럼 보이지만 네이티브 이벤트에서 직접 호출 할 때만 가능합니다. SetTimeout과 같은 것을 사용하여 포커스를 호출하면 키보드를 호출하지 않습니다. iOS 키보드 제어가 매우 나쁩니다. 좋은 상황이 아닙니다.
iPad의 iOS 7을 사용하여이 작업을 수행 할 수 있었던 유일한 방법 <textarea></textarea>
은<input>
필드 입니다.
예
<textarea onclick="this.setSelectionRange(0, 9999);">My text will be selected when textarea is clicked.</textarea>
텍스트 영역을 읽기 전용으로 만들면 선택 트릭이 더 이상 작동하지 않기 때문에 사용자가 영역 내에서 텍스트를 변경하는 것을 방지하는 방법이 더 어려웠습니다.
나는이 해결책을 찾기 위해 미쳐 버렸고, 당신의 모든 응답이 나를 위해 또 다른 웜 캔을 열 도록 도왔 습니다.
클라이언트가 할 수있는 사용자를 원 클릭하고 모두 선택 , 또한 사용자 수 있도록 '탭'을 아이 패드에서 모두 선택 (외부 키보드와. 내가 아는 미친 ...)
이 문제에 대한 나의 해결책은 이벤트를 재정렬하는 것입니다. 먼저 초점을 맞춘 다음을 클릭 한 다음 시작 을 터치 합니다.
$('#myFUBARid').on('focus click touchstart', function(e){
$(this).get(0).setSelectionRange(0,9999);
//$(this).css("color", "blue");
e.preventDefault();
});
많은 분들이 저를 수없이 도와 주셨 기 때문에 이것이 누군가에게 도움이되기를 바랍니다.