2009-10-29 9 views
0

J'ai une zone de liste multi-sélection. Je veux être en mesure de sélectionner un certain nombre d'éléments et d'agir sur la sélection en appuyant sur la touche Entrée. Le problème que j'ai est que lorsque j'appuie sur Entrée, l'élément en cours au niveau du curseur devient le seul élément sélectionné. Les autres sont désélectionnés donc ma fonction n'agit que sur un seul objet. Que puis-je faire pour empêcher la touche Entrée de sélectionner un élément?Empêche Entrée de sélectionner un seul élément dans une zone de liste

Je configure la fonction onkeypress en javascript comme suit. Le doListKeyPress vérifie la clé d'entrée et agit sur elle.

select.onkeypress = function(e) { doListKeyPress(e, "myListName"); }; 
+1

@seppy: Le comportement commun d'un utilisateur pour la sélection multiple est via ctrl + click ou ctrl-spacebar. La touche "Enter" est plutôt étrange pour moi. –

Répondre

1

Ajouter cet événement:

select.onkeydown = function(e) { if(e.keyCode == 13) select.blur(); }; 

Comme keydown vient avant keypress, il mettra l'accent mis sur le comportement listbox d'où le navigateur par défaut Enter est « contournée ».

Clause de non-responsabilité: Cette réponse ne permet pas la sélection d'article par Enter. Cela peut être fait avec une implémentation ultérieure.

+0

Merci pour le pointeur. La fonction onkeydown empêche la touche Entrée de sélectionner une seule option. Cependant, étant donné que le select est flou sur le raccourci clavier, l'événement onkeypress ne se déclenche jamais, j'ai donc dû créer une fonction document.onkeypress pour le gérer comme suit. document.onkeypress = fonction (e) { if (e.keyCode == 13) { doListKeyPress (e, select); } }; –

+0

@seppy, donc tu as ce que tu veux finalement? –

Questions connexes