2012-03-20 5 views
1

J'ai un script qui affiche les résultats de la recherche après avoir tapé quelque chose dans le champ de saisie. Je veux imiter Google en faisant le texte gras qui est similaire à la valeur de l'entrée.Imiter la police en gras Google avec Jquery

J'ai essayé ceci:

$(input).live('keyup', function(){ 
    var makeBold = $('#Results').css("font-weight","bold"); 

    if ($(input).val() == $('#Results').html()) { 
     makeBold(); 
    } 
}); 

Le problème est que maintenant tout est en gras au lieu de simplement la valeur correspondante. Comment puis-je me référer à la valeur et la relier aux résultats?

+2

makeBold n'est pas une fonction ... – max

+0

Sans le HTML associé, personne ne peut en être certain. –

+1

Notez que vous ne devriez pas apprendre à le faire vous-même, mais il existe [scripts existants] (http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html) qui va gérer cela pour vous. –

Répondre

0

obtenu ce travail en utilisant le lien fourni par Mior @ Michael

var makeBold = $(input).val(); 
$('#Results').highlight(makeBold); 

La partie .highlight fait référence à la css que vous pouvez modifier en gras ou autre chose.

2

Vous voudrez emballer les pièces correspondantes des résultats dans une étiquette <span style='font-weight:bold;'>. Vous pouvez utiliser la fonction javascript replace() pour le faire assez facilement.

2

Votre problème est que vous exécutez "made bold" lorsque vous définissez makeBold. Le résultat de css() affecté à makeBold, ce n'est pas une fonction.

var makeBold = $('#Results').css("font-weight","bold"); 

Si vous voulez une fonction, attribuer makeBold un anonyme.

var makeBold = function() { $('#Results').css("font-weight","bold"); } 
+0

Cela fait partie du problème, bien qu'il y ait d'autres problèmes. –

1

Il y a du code que vous ne montrez pas ici. Je ne suis pas sûr de ce qui se passe avec vos résultats auto-complétés. De ce qui est affiché ici tout ce que je sais est que vous avez une boîte de saisie et un conteneur de résultats dans lequel je peux seulement supposer être rempli avec des résultats sur key-up (qui n'est pas montré dans votre fonction).

Indépendamment du Javascript, vous définissez les propriétés CSS sur l'ensemble du conteneur #Results. S'il y a d'autres résultats, ils auront aussi un fort font-weight. Ajoutez peut-être des balises span autour du résultat auto-complété et utilisez #Results span comme sélecteur.

EDIT: En supposant que vous avez une fonction automatique complète déjà l'impression des suggestions, ce que je ferais pour mettre en gras la partie dactylographiée du résultat complet automatique est en comparant leurs sous-chaînes sur keyup - puis les envelopper dans une étiquette forte.

+0

Les résultats ont des classes. Je peux les faire faire n'importe quoi. Le problème est que je ne sais pas comment relier la valeur de l'entrée à autre chose (plusieurs classes) dans les résultats – Youss

Questions connexes