Pregunta Programando texto de manera programada en un campo de entrada en dispositivos iOS (Safari móvil)


¿Cómo selecciona programáticamente el texto de un campo de entrada en los dispositivos iOS, p. iPhone, iPad con Safari móvil?

Normalmente es suficiente llamar al .select() función en el <input ... /> elemento, pero esto no funciona en esos dispositivos. El cursor simplemente se deja al final de la entrada existente sin realizar ninguna selección.


76
2017-07-17 15:24


origen


Respuestas:


setSelectionRange(0, 9999);

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


85
2018-06-10 05:54



Nada en este hilo funcionó para mí, esto es lo que funciona en mi iPad:

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

25
2017-09-15 19:43



Mira este violín: (ingrese un texto en el cuadro de entrada y haga clic en 'seleccionar texto')

Está seleccionando texto en una caja de entrada en mi iPod (quinta generación iOS6.0.1), abriendo el teclado y también mostrando el menú Cortar / Copiar / Sugerir ...

Usando javascript simple No intenté esto con jQuery

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

Tenga en cuenta que el número 999 es solo una muestra. Debe establecer estos números en la cantidad de caracteres que desea seleccionar.

ACTUALIZAR:

  • iPod5 - iOS6.0.1 - Trabajando bien.
  • iPad1 - iOS5.1.1 - Solo texto seleccionado. Toque la selección una vez para abrir el menú Cortar / Copiar
  • iPad2 - iOS4.3.3 - Solo texto seleccionado. Toque la selección una vez para abrir el menú Cortar / Copiar

Para los dos últimos, puede experimentar activando un evento de clic en el input elemento

ACTUALIZAR: (07-10-2013)

  • iPod5 - iOS7.0.2 - Usar el violín en el enlace: No se puede ver el texto escrito en el cuadro de entrada.                   Al presionar Seleccionar, me redirecciona a facebook.com (??? wtf ???)                   no tengo idea de lo que está pasando allí.

ACTUALIZAR: (14-11-2013)

  • iOS 7.0.3: gracias al comentario de binki actualizar que el                    .selectionStart y .selectionEnd  hace trabajo.

ACTUALIZAR: (15-01-2015)

  • iOS 8.x.x: gracias al comentario de Michael Siebert. Tomado del comentario:                   Tuve que escuchar los eventos de enfoque Y clic y luego establecer Tiempo / _.                   para que funcione en ambos casos: haga clic en la entrada o enfoque a través de tabulación

23
2017-12-07 10:26



Es difícil probar que es negativo, pero mi investigación sugiere que esto es un error en Mobile Safari.

Tenga en cuenta que focus () funciona, más o menos, aunque puede requerir más de un toque para tener éxito, y no es necesario si está tratando de responder a un golpecito del usuario en el campo en cuestión ya que el toque mismo le dará el campo atención. Desafortunadamente, selecciona () es simplemente no funcional en Mobile Safari.

Tu mejor apuesta puede ser un informe de error con manzana.


22
2017-08-30 09:39



Lo siento, en mi publicación anterior, no noté que el Javascript implicaba que querías una respuesta en Javascript.

Para obtener lo que quieres en UIWebView con javascript, He logrado juntar dos elementos importantes de información para que funcione. No estoy seguro sobre el navegador móvil.

  1. element.setSelectionRange(0,9999); hace lo que queremos

  2. El evento mouseUp está deshaciendo la selección

Por lo tanto (usando Prototype):     

    input.observe ('focus', function () {
      this.setSelectionRange (0, 9999);
    });
    input.observe ('mouseup', function (event) {
      event.stop ();
    });

Hace el truco.

Mate


7
2017-07-25 08:03



Parece que el enfoque funcionará, pero solo cuando se llame directamente desde un evento nativo. llamando al foco usando algo como SetTimeout no aparece llama el teclado. El control del teclado ios es muy pobre. No es una buena situación.


3
2018-03-22 03:02



Algo como el siguiente me funciona para mí en Webkit que viene con Android 2.2:

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

Ver Chromium Número 32865.


1
2018-01-20 04:14



Con iOS 7 en iPad, la única forma en que pude hacer esto fue utilizar realmente <textarea></textarea> en lugar de <input> campo.

p.ej.

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

Cómo evitar que el usuario cambie el texto dentro del área fue más difícil, ya que hace que textarea solo lea, el truco de selección ya no funcionará.


1
2018-02-05 16:01



Me volví loco buscando esta solución, mientras que todas sus respuestas ayudaron abrió otra lata de gusanos para mí.

El cliente quería que el usuario pudiera haga clic y seleccione todo, y también dejar que el usuario 'tab' y seleccionar todo en el iPad (con un teclado externo. Lo sé, loco ...)

Mi solución a este problema fue reorganizar los eventos. primero Atención, entonces Hacer clic, entonces touchstart.

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

Espero que esto ayude a alguien, ya que muchos me han ayudado en innumerables ocasiones.


0
2017-11-02 15:32