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


Answers

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

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




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.




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 dará el campo atención. Desafortunadamente, select () simplemente no funciona en Mobile Safari.

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




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