2010-08-17 16 views
3

Vous avez une saisie de texte par laquelle quelqu'un peut commencer à taper, puis au-dessous de la liste va peupler en fonction de ce qui correspond à votre entrée.Saisie prédictive/déroulante JavaScript

1) Au moment im en utilisant ce pour vérifier « contient »:

if(listToRedo[i].value.indexOf(text) != -1){ 

mais le problème est qu'il semble être sensible à la casse, comment puis-je changer cela?

2) Est-ce que onkeyevent, onkeypress, onkeydown accepte l'action de suppression? Aussi quel est le meilleur à utiliser pour cette activité.

Répondre

2

1) ... mais le problème est qu'il semble être sensible à la casse, comment Puis-je changer cela?

Vous avez deux options. La première consiste à convertir les chaînes en minuscules, comme ceci:

if (listToRedo[i].value.toLowerCase().indexOf(text.toLowerCase()) != -1) { 

ou utiliser une expression régulière avec le cas de modification sensible (i):

var reg = new RegExp(text, "i"); 
if (listToRedo[i].value.search(reg) != -1) { 

Cette deuxième méthode peut introduire des problèmes, mais , si votre chaîne de test contient des caractères qui ont des fonctions spéciales dans les expressions régulières et que vous devrez d'abord les faire disparaître. La première méthode est plus appropriée pour une recherche de base.

2) Est-ce que onkeyevent, onkeypress, onkeydown accepte l'action de suppression? Aussi quel est le meilleur à utiliser pour cette activité.

onkeydown et onkeyup sera le feu pour la touche Suppr. onkeypress ne se déclenche pas pour la touche de suppression dans au moins Chrome et IE, pour lequel il se déclenche pour les clés suivantes seulement:

  • lettres: A - Z (majuscules et minuscules)
  • Numerals: 0 - 9
  • Symboles:! @ # $%^& *() _ - + = < [] {},. /?\ | ' `" ~
  • système: ESC, barre d'espace, ENTER

Il est préférable d'utiliser une combinaison de onkeypress et onkeydown et vérifier un changement de la valeur de l'entrée, comme le comportement de ces événements

2
if(listToRedo[i].value.toLowerCase().indexOf(text.toLowerCase()) != -1){ 

Si j'ai bien compris, ce qui précède devrait fonctionner pour votre cas.

2
  1. Utilisez deux listes et convertissez tous les éléments de l'un d'entre eux en minuscules. Ensuite, vous pouvez également convertir le texte en minuscules avant de faire la recherche.

  2. onkeydown et onkeyup sont invoquées pour chaque touche, même les touches de curseur, déplacement, etc.

+0

* onkeypress * n'est pas invoqué pour toutes les clés de tous les navigateurs –

+1

@Andy: Merci, corrigé. –

Questions connexes