J'ai un champ de saisie simple comme celui-ci.
<div class="search">
<input type="text" value="y u no work"/>
</div>
Et j'essaie de focus()
à l'intérieur d'une fonction. Ainsi, à l'intérieur d'une fonction aléatoire (peu importe de quelle fonction il s'agit), j'ai cette ligne
$('.search').find('input').focus();
Cela fonctionne parfaitement sur tous les ordinateurs de bureau, quels qu'ils soient.
Cependant, il ne fonctionne pas sur mon iPhone. Le champ n'est pas mis en évidence et le clavier ne s'affiche pas sur mon iPhone.
À des fins de test et pour vous montrer le problème, j'ai réalisé un échantillon rapide :
$('#some-test-element').click(function() {
$('.search').find('input').focus(); // works well on my iPhone - Keyboard slides in
});
setTimeout(function() {
//alert('test'); //works
$('.search').find('input').focus(); // doesn't work on my iPhone - works on Desktop
}, 5000);
Une idée de la raison pour laquelle le focus()
ne fonctionne pas avec la fonction de temporisation de mon iPhone.
Pour voir l'exemple en direct, testez ce bidule sur votre iPhone. http://jsfiddle.net/Hc4sT/
Mise à jour :
J'ai créé exactement le même cas que celui auquel je suis actuellement confronté dans mon projet actuel.
J'ai une boîte de sélection qui devrait, lorsqu'elle est "modifiée", mettre l'accent sur le champ de saisie et faire glisser le clavier sur l'iphone ou d'autres appareils mobiles. J'ai découvert que la fonction focus() est correctement activée mais que le clavier ne s'affiche pas. J'ai besoin que le clavier s'affiche.