2011-07-18 10 views
11

Tengo un div que actúa como un cuadro de texto a través de algún javascript inteligente. Sí, eso huele, pero es un código de proveedor que no puedo cambiar :(Abra el teclado de un iPad mediante JavaScript en un campo que no sea de texto?

En un iPad, el teclado no se muestra porque no es un campo de texto. ¿Hay alguna manera de forzar la apertura del teclado mediante javascript o decorar el HTML con algo que le dice a Safari "Sí, esto es realmente un campo de texto, ¡confía en mí!"?

+0

No creo que sea posible me temo ... hay un montón de gente que pide la misma pregunta: http://www.google.co .uk/search? sourceid = chrome & ie = UTF-8 & q = javascript + abrir + ipad + teclado –

+0

Si puede afectar la página con javascript, podría crear un cuadro de texto que reemplazara el div ... –

+0

@Charles True, pero luego También tendría que agregar toda la lógica de JavaScript que tiene el proveedor. Puedo hacer eso, pero si hay una manera de evitarlo, sería genial –

Respuesta

10

Desde mi experiencia no hay forma de abrir el teclado del iPad o iPhone a través de Javascript. Terminé usando un solución alternativa que podría ser útil.

Simplemente coloco un campo de texto con su opacidad establecida en 0 sobre el div en cuestión. Luego actualizo el div con el contenido del campo de texto en el cambio.

como tal (con jQuery)

$('textarea').bind('input', function(e){ 
    var changedVal = $(e.currentTarget).val(); 
    $('div').html(changedVal);  
}); 

// The input event is not a cross browser solution, use a combination of 
// keyboard and mouse events to correctly respond to any changes in the textarea 

Si su código de proveedor dependen de en el teclado o ratón eventos oyentes que hacer es mágico, usted podría proxy de todos los tipos de eventos en el div debajo.

Algo parecido a lo que (usando jQuery)

$('textarea').bind('keyup keydown keypress mouseup mousedown click', function(e) { 
    e.currentTarget = $('div').get(0); 
    $('div').trigger(e); 
}); 
Cuestiones relacionadas