2010-11-26 5 views
1

Je suis en train de développer un clavier virtuel Javascript, et je voudrais qu'il apparaisse à chaque fois qu'un utilisateur appuie sur un champ de texte. Mais comment puis-je savoir si un champ de texte (ou n'importe quelle entrée) est sélectionné?Clavier virtuel Javascript: comment identifier les champs de texte?

--clarification

J'ai à l'information ou de contrôle sur la page qui sera chargée. Je veux juste que, si un champ de saisie est sélectionné et que l'utilisateur appuie sur Entrée, mon clavier virtuel apparaît.

--update

Est-ce que cela fait une différence si ce que je suis en train de faire est une extension firefox? (Je pense qu'il ne devrait pas)

+0

JQuery serait-il une option? –

+0

@ Frédéric Hamidi oui –

Répondre

0

Ma solution , pour l'instant, était d'utiliser une clé spécifiée juste pour ouvrir le clavier virtuel lorsque la demande de l'utilisateur.

1

lier à l'événement onfocus. Cet événement est déclenché lorsque l'élément d'entrée obtient le focus. Vous pouvez supprimer le clavier à nouveau sur l'événement onblur si vous voulez le masquer à nouveau.

+0

Je n'ai pas l'identifiant du composant. Je veux que lorsque tout composant d'entrée sur la page est concentré, mon clavier virtuel apparaît. –

0

pour être averti qu'un champ de texte est sélectionné, vous pouvez joindre un gestionnaire d'événements à onfocus des champs qui vous intéressent.

Exemple jQuery (jQ choisi par souci de concision, l'événement fonctionne dans JS plaine):

$('input[type="text"]').focus(function(event){ 
    // do something here 
}); 

Si vous souciez que de saisir la clé « enter », vous n'avez pas à vous soucier de mise au point, il suffit de connecter à l'événement onkeypress des champs de texte (voir @ réponse de poelinca).

+0

Je n'ai pas l'identifiant du composant. Je veux que lorsque tout composant d'entrée sur la page est concentré, mon clavier virtuel apparaît. –

+0

@Tom Brito: La règle ci-dessus correspond à n'importe quel élément de saisie de texte, vous n'avez pas besoin de connaître l'ID du composant. – Piskvor

+0

ce n'est pas encore reconnu. Ce que je fais est comme une extension de Firefox, mais n'importe quel javascript devrait fonctionner très bien (comme c'était le cas jusqu'à maintenant). –

3

utilisation jQuery et ajoutez Malgré ce jquery disent apologetes les suivantes

  $(document).ready(function() { 
       //apply action to input elements by class 
       //$("#.input_class").keypress(function(e) { 
       //apply action to all input elements (input, textarea, select and button) 
       $(':input').keypress(function(e) { 
        if(e.keyCode==13){ 
         // Enter pressed... do anything here... 
         alert($(this).val()); 
        } else { 
              //make shure you get the desired action for other keys pressed 
         xTriggered++; 
        } 
        //do not submit the form 
        return false; 
       }); 
      }); 
+0

Notez que vous pouvez également vouloir arrêter la propagation d'événement, comme dans la plupart des navigateurs "Enter" dans un champ de formulaire soumettra le formulaire. – Piskvor

+0

".youre_input_class" signifie que j'ai besoin de connaître la classe du champ de saisie? Parce que ce n'est pas mon champ de texte, est tout champ de texte qui apparaît dans le navigateur ... –

+0

@Piskvor, merci pour les heads up, @Tom vérifier la mise à jour et les commentaires, vous devriez être en mesure de réaliser ce que vous voulez maintenant. –

0

, il n'y a pas de soucis à l'instrument tous les champs sans avoir recours à une grande et lente bibliothèque externe:

for (var i = 0; i < document.forms.length; i++) 
    for (var j = 0; j < document.forms[i].elements.length; j++) 
    if (document.forms[i].elements[j].tagName.match(/^INPUT$/i)) 
     if (document.forms[i].elements[j].type.match(/^TEXT$/i)) 
     document.forms[i].elements[j].addEventListener('focus', function(){/* your stuff here */}, false); 
+0

ça ne fonctionne pas non plus .. –

Questions connexes