programing

iOS 기기(모바일 Safari)의 입력 필드에서 텍스트를 프로그래밍 방식으로 선택

yoursource 2023. 7. 26. 22:52
반응형

iOS 기기(모바일 Safari)의 입력 필드에서 텍스트를 프로그래밍 방식으로 선택

iOS 기기(예: iPhone, iPad에서 모바일 Safari를 실행하는 경우)에서 입력 필드의 텍스트를 프로그래밍 방식으로 선택하는 방법은 무엇입니까?

일반적으로 전화를 걸면 충분합니다..select()에서 합니다.<input ... />요소입니다. 그러나 이러한 장치에서는 작동하지 않습니다.선택하지 않고 기존 항목의 끝에 커서를 두면 됩니다.

input.setSelectionRange(0, 9999);

https://developer.mozilla.org/en/DOM/Input.select

이 스레드에서는 아무 것도 작동하지 않았습니다. iPad에서 작동하는 것은 다음과 같습니다.

// t is the input field
setTimeout(function() {
    t.setSelectionRange(0, 9999);
}, 1);

이 바이올린을 참조하십시오. (입력 상자에 일부 텍스트를 입력하고 '텍스트 선택'을 클릭

iPod(iOS 6.0.1 5세대)의 입력 상자에서 텍스트를 선택하고 키보드를 열고 잘라내기/복사/제안... 메뉴를 표시합니다.

일반 Javascript를 사용합니다.jQuery에서 시도하지 않았습니다.

document.getElementById("p1").selectionStart = 0
document.getElementById("p1").selectionEnd = 999

999라는 숫자는 단지 샘플일 뿐입니다.이 숫자를 선택할 문자 수로 설정해야 합니다.

업데이트:

  • iPod 5 - iOS 6.0.1 - 정상 작동.
  • iPad1 - iOS5.1.1 - 텍스트만 선택됨선택 항목을 한 번 눌러 잘라내기/복사 메뉴 열기
  • iPad2 - iOS4.3.3 - 텍스트만 선택됨선택 항목을 한 번 눌러 잘라내기/복사 메뉴 열기

두에는 클릭 할 수 있습니다.input

업데이트: (07-10-2013)

  • iPod5 - iOS7.0.2 - 링크의 피들 사용:입력 상자에서 입력한 텍스트를 볼 수 없습니다.선택을 누르면 facebook.com (?)으로 리디렉션됩니다.뭐라고요?무슨 일이 일어나고 있는지 전혀 모릅니다.

업데이트: (14-11-2013)

  • iOS 7.0.3 : Binki 업데이트의 코멘트 덕분에..selectionStart그리고..selectionEnd 효과가 있습니다.

업데이트: (15-01-2015)

  • iOS 8.x.x : Michael Siebert의 코멘트 덕분입니다.코멘트에서 발췌:포커스와 클릭 이벤트를 모두 청취한 다음 Timeout/.debounce를 설정하여 두 경우 모두 작동하도록 해야 했습니다. 탭핑을 통해 입력을 클릭하거나 포커스를 선택합니다.

부정적인 것을 증명하기는 어렵지만, 제 연구에 따르면 이것은 모바일 사파리의 버그입니다.

포커스()는 어느 정도 작동합니다. 성공하려면 두 번 이상의 탭이 필요할 수 있으며, 탭 자체가 필드 포커스를 제공하므로 해당 필드의 사용자 탭에 응답할 필요가 없습니다.안타깝게도 select()는 Mobile Safari에서 단순히 작동하지 않습니다.

당신의 최선의 방법은 Apple의 버그 보고서일 수 있습니다.

죄송합니다, 이전 게시물에서 당신이 자바스크립트로 답변을 원한다는 자바스크립트를 보지 못했습니다.

자바스크립트UIWebView에서 원하는 것을 얻기 위해, 저는 그것을 작동시키기 위해 두 개의 중요한 정보를 긁어모았습니다.모바일 브라우저에 대해 잘 모르겠습니다.

  1. element.setSelectionRange(0,9999);우리가 원하는 것을 합니다.

  2. mouseUp 이벤트가 선택을 취소하는 중입니다.

따라서(프로토타입 사용):

input.module', function{이것.선택 범위 설정(0, 9999);});input. ('mouseobserveup', 함수(이벤트) {event.stop();});

요령을 터득합니다.

포커스가 작동하는 것처럼 보이지만 기본 이벤트에서 직접 호출해야 합니다. SetTimeout과 같은 것을 사용하여 포커스를 호출하는 것은 키보드를 불러오는 것처럼 보이지 않습니다.ios 키보드의 컨트롤이 매우 좋지 않습니다.상황이 좋지 않습니다.

저는 이 해결책을 찾느라 정신이 없었지만, 당신의 모든 답변이 저에게 또 다른 골칫거리를 열어주었습니다.

고객은 사용자가 iPad(외부 키보드 포함)에서 모두클릭하고 선택할 수 있기를 원했습니다.알아요, 미쳤어요...)

이 문제에 대한 저의 해결책은 사건들을 다시 정리하는 것이었습니다.Focus(포커스), Click(클릭), start(시작)를 차례로 누릅니다.

$('#myFUBARid').on('focus click touchstart', function(e){
  $(this).get(0).setSelectionRange(0,9999);
  //$(this).css("color", "blue");
  e.preventDefault();
});

여러분들이 저를 수없이 도와주셨듯이, 저는 이것이 누군가에게 도움이 되기를 바랍니다.

Android 2.2와 함께 제공되는 Webkit에서는 다음과 같은 기능이 작동합니다.

function trySelect(el) {
    setTimeout(function() {
        try {
            el.select();
        } catch (e) {
        }
    }, 0);
}

크롬 문제 32865를 참조하십시오.

iPad에서 iOS 7을 사용하여 이 작업을 수행할 수 있었던 유일한 방법은 실제로 사용하는 것이었습니다.<textarea></textarea>대신에<input>들판.

예.

<textarea onclick="this.setSelectionRange(0, 9999);">My text will be selected when textarea is clicked.</textarea>

텍스트 영역을 읽기만 하면 선택 트릭이 더 이상 작동하지 않기 때문에 사용자가 영역 내에서 텍스트를 변경하지 못하게 하는 방법이 더 어려웠습니다.

HTML5 호환 브라우저를 사용하는 경우placeholder="xxx"당신의input꼬리표. 그걸로 충분할 겁니다.

언급URL : https://stackoverflow.com/questions/3272089/programmatically-selecting-text-in-an-input-field-on-ios-devices-mobile-safari

반응형