2013-01-29 2 views
-2

Comment faire une recherche par nom et prénom avec un tableau javascript? et chaque fois que je recherche quelque chose qui commence par je, div = résultat montrez-moi tous Nom et patronymes avec Je dans ce cas Jessica et Jey;
Ce serait un événement de Onkeydown, non?comment faire une recherche avec un tableau

<input type='text' id='filter' placeholder='search in array'> 

ici imprimer le résultat:

<div id='result'></div> 

c'est mon tableau:

var datos = [ ['Jessica','Lyn',3], 
     ['Jhon','Cin',5], 
     ['Alison','Peage',1], 
     ['Thor','zhov',12], 
     ['Jey','hov',32] 
     ]; 
+1

Pourriez-vous s'il-vous-plaît nous afficher le code de recherche que vous avez écrit jusqu'ici? Quel est le problème que vous rencontrez? –

+0

vous pouvez utiliser une bibliothèque jqueryui qui est similaire aux astuces facebook tout en recherchant des amis en utilisant @ dans les commentaires http://jqueryui.com/autocomplete/ – user2016558

Répondre

1
var $result = $('#result'); 

$('#filter').on('keyup', function() { 
    var $fragment = $('<div />'); 
    var val = this.value.toLowerCase(); 
    $.each(datos, function (i, item) {console.log(item[0].toLowerCase().indexOf(val)); 
     if (item[0].toLowerCase().indexOf(val) == 0) { 
      $fragment.append('<p>' + item[0] + ' ' + item[1] + '</p>'); 
     } 
    }); 
    $result.html($fragment.children()); 
}); 

Voici le violon: http://jsfiddle.net/GkWGk/

+1

pourquoi le résultat a-t-il $? –

+3

@chikatetsu - Juste pour indiquer qu'il s'agit d'une collection jQuery. –

+2

@chikatetsu: le '$' dans '$ result' identifie que' $ result' est une variable qui est un wrapper jQuery. C'est un moyen rapide de différencier les variables JavaScript normales et les variables sur lesquelles vous pouvez utiliser les méthodes jQuery sans avoir à les renvoyer. – Nope

2
$("#filter").on('keyup', function() { 
    var val = $(this).val(); 
    $("#result").empty(); 
    $.each(datos, function() { 
     if (this[0].indexOf(val) >= 0 || this[1].indexOf(val) >= 0) { 
     $("#result").append("<div>" + this[0] + ' ' + this[1] + "</div>"); 
     } 
    }); 
}); 

http://jsfiddle.net/MqTBm/

1

La réponse simple est d'exécuter une boucle for sur la matrice vérifiant chaque élément. Cependant, ce n'est pas une bonne idée si vous avez un grand choix. Il y a plusieurs façons d'indexer un tableau. En pensant au sommet de ma tête, je pourrais construire un second tableau qui stocke les champs joints comme une chaîne comme l'index, puis la référence du tableau. Vous pouvez donc faire une boucle dans l'objet de référence. Trouvez l'entrée avec des comparaisons de chaînes. Prenez la référence d'index au tableau réel.

+0

Cette [SO Question] quasi-connexe (http://stackoverflow.com/questions/7531414/lucene-like-searching-through-json-objects-in-javascript) a une réponse qui décrit mieux de quoi je parlais. – Sukima

Questions connexes