2010-10-04 15 views
6

Par exemple, si jeY at-il un moyen d'éviter l'affichage du clavier en safari mobile

<input type="text" id="myid"> 

et je me sers de l'iPad, quand je me concentre sur cette entrée, l'iPad afficherait automatiquement le clavier. Y a-t-il un moyen d'éviter cela? Merci

+1

et comment un utilisateur entrerait-il des données dans ce champ si le clavier n'est pas affiché? –

+1

Une table apparaîtrait en se concentrant sur le champ de saisie afin que l'on puisse sélectionner un élément. Une balise de sélection simple ne ferait pas parce que chaque option aura plusieurs éléments de données. –

Répondre

2

Ne laissez pas la mise au point aller à ce champ. Utilisez un gestionnaire d'événements pour empêcher le comportement par défaut. Le gestionnaire d'événements ressemblerait à quelque chose comme ceci:

function onFocus(e) { 
    e.preventDefault(); 
    // you could change the color of the field to indicate this is the active field. 
} 

Votre code de gestion de table pourrait remplir ce champ sans le navigateur jamais se concentrer là-dessus.

3

La meilleure solution que j'ai trouvée est de positionner un div invisible sur la zone de texte. Cela empêche la zone de texte de recevoir des événements tactiles, ce qui empêche l'apparition du clavier. Capturez des événements sur le div, et si vous voulez que le textarea soit éditable, appelez .focus() dessus, et cela fera apparaître le clavier.

L'utilisation de event.preventDefault ne fonctionne pas très bien. Il fait "sauter" l'écran lorsque le clavier apparaît et disparaît immédiatement.

11

Oui, il suffit de faire l'élément readonly

<input type="text" id="myid" readonly="readonly" /> 

Notez que cela ne fonctionne pas avec l'élément. Je crois que ça pourrait être un bug.