content javascript iphone html safari ios

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



select input content on focus (10)

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

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


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 Issue 32865 .


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

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á.


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, select () simplemente no funciona en Mobile Safari.

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


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

Para obtener lo que desea 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


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

El cliente quería que el usuario pudiera hacer clic y seleccionar 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. Primer foco , luego haga clic en y luego toque .

$(''#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.


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);


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.


Si está utilizando navegadores compatibles con HTML5, puede usar placeholder="xxx" en su etiqueta de input . Eso debería hacer el trabajo.


Vea 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 elemento de input

ACTUALIZACIÓN: (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. Presionar select me redirecciona a facebook.com (??? wtf ???) sin idea de lo que está pasando allí.

ACTUALIZACIÓN: (14-11-2013)

  • iOS 7.0.3: gracias al comentario de la actualización de binki que el .selectionStart y .selectionEnd funciona.

ACTUALIZACIÓN: (15-01-2015)

  • iOS 8.xx: gracias al comentario de binki . Tomado del comentario: tuve que escuchar los eventos de enfoque y clic y luego configurarTimeout / _. Rebotear para que funcione en ambos casos: haga clic en la entrada o enfoque a través de tabulación