2011-03-14 2 views
0
$('#client').keyup(function() { 
    if ($('#client').val() != $('.recent_client').attr('id')) { 
     $('.recent_client').removeClass('recent_client_active').addClass('recent_client_inactive'); 
    } 
    else if (jQuery.inArray(parseInt($('#client').val()), client_ids)) { 
     alert('IN ARRAY'); 
    } 
}); 

Mon HTMLjQuery InArray ne regardant que la première valeur

<p><input type="text" name="client" id="client" placeholder="Click here and start typing your client name..."></p> 

<div id="recent_clients"> 
<p><a href="#" class="recent_client recent_client_inactive" id="Client Name 1">Client Name 1</a><a href="#" class="recent_client recent_client_inactive" id="Client Name 2">Client Name 2</a><a href="#" class="recent_client recent_client_inactive" id="Client Name 3">Client Name 3</a><a href="#" class="recent_client recent_client_inactive" id="Client Name 4">Client Name 4</a><a href="#" class="recent_client recent_client_inactive" id="Client Name 5">Client Name 5</a><a href="#" class="recent_client recent_client_inactive" id="Client Name 6">Client Name 6</a></p> 
</div> 

J'ai un tableau qui contient les valeurs id de chacun un dans mes #recent_clients div. Trucs simples. J'ai aussi une boîte de saisie. Si vous tapez le nom complet de l'un des clients récents, je veux que ce nom de client soit mis en surbrillance. Donc j'ai supposé que jQuery.inArray aiderait avec ceci, mais cela ne fonctionne pas. Si je tape la première valeur du tableau ("Nom du client 1"), j'obtiens l'alerte. Cependant, si je tape tout autre nom de client suivant ("Nom du client 2" par exemple), rien ne se passe.

Que puis-je faire de mal ici?

+0

Pouvez-vous montrer votre code html? – Belinda

+0

Est-ce que l'accolade de fermeture manquante dans le code verrouille une erreur de copier/coller ou est-ce aussi dans le code actuel? –

+0

J'ai mis à jour mon code pour inclure la fonction .keyup réelle que j'ai ainsi que le HTML. Lorsque j'utilise jQuery.each pour retourner les données du tableau, il affiche les 6 clients que j'ai. – dallen

Répondre

5

Depuis InArray() fonctionne comme indexOf, vous devez tester le résultat étant> -1

Mise à jour

var client_ids = ['Client Name 1', 'Client Name 2', 'Client Name 3', 'Client Name 4', 'Client Name 5']; 
$('#client').keyup(function() { 
    if (jQuery.inArray($('#client').val(), client_ids) > -1) 
     $('#client').css('background-color','#00cc00'); 
    else 
     $('#client').css('background-color','#cc0000'); 
}); 
+0

Plus d'infos dans le [docs] (http://api.jquery.com/jQuery.inArray/) :) –

+0

J'ai déjà essayé, mais il ne m'avertit pas du tout. Donc, sans '> -1', j'obtiens au moins la première paire clé/valeur, donc je reçois mon alerte. Avec '> -1', je n'ai rien. – dallen

+0

@dallen - Cette suggestion est correcte, mais vous devez vous débarrasser de 'parseInt' puisque vos identifiants ne sont pas des entiers. –

Questions connexes