2010-02-05 7 views
0

J'ai donc 2 entrées. Les deux sont pour un "autocomplete". J'ai aussi 2 fonctions qui font à peu près la même chose ... Chaque entrée appelle une fonction différente surBlur. Le problème est que la seconde lors de la sélection d'une "suggestion" pour la deuxième entrée, il remplit le premier. Que puis-je faire pour que le second remplisse le second?jQuery, plusieurs entrées et onBlur

Il y a probablement une meilleure façon de le faire mais ma connaissance jQuery/Javascript est limitée et je manque de temps ... Merci!

Le code:

function fillLocation(thisValue) { 
    $('#location-box').val(thisValue); 
    setTimeout("$('#suggestionsLocation').fadeOut('fast');", 200); 
} 

function fillTerms(thisValue) { 
    $('#terms-box').val(thisValue); 
    setTimeout("$('#suggestionsTerms').fadeOut('fast');", 200); 
} 


<input type="text" name="search_location" id="location-box" value="" onkeyup="suggestLocation(this.value);" onblur="fillLocation();" autocomplete="off" /> 

<input type="text" name="search_terms" id="terms-box" value="" onkeyup="suggestTerms(this.value);" onblur="fillTerms();" autocomplete="off" /> 
+0

Je suis confus parce que vous avez fillTerms qui prend un argument mais dans votre onblur vous appelez fillTerms() sans argument –

+0

Et vous êtes se référant aux éléments ('# terms-box') pour lesquels vous n'avez fourni aucun code. Pouvez-vous poster un exemple de code plus complet Et peut-être se référer aux noms des ID des éléments au lieu de "première/seconde entrée". Cela clarifierait (au moins pour moi;)). –

+0

@Fixix - Je pense qu'il veut dire de se référer aux entrées que les ID sont affectés aux mêmes entrées qui exécutent les fonctions. – user113716

Répondre

2

Je suppose que je suppose que vous voulez déclencher keyup et le flou des événements pour les deux entrées qui ont des fonctionnalités similaires, et ce sera à la fois à son tour affecter la même entrée.

Ce serait un moyen. Liez les événements en javascript, pas le HTML, et exécutez le code approprié

$('document').ready(function() { 

    $('#location-box,#terms-box') 
        .bind('keyup', function() { 
          // do your keyup thing using $(this) 
          // to refer back to the input 
          //$('body').append($(this).attr('id') + ': keyup<br />'); 
          var theValue = $(this).val(); 
        }) 
        .bind('blur', function() { 
          // do your blur thing using $(this) 
          // to refer back to the input 
          //$('body').append($(this).attr('id') + ': blur<br />'); 
        }) 
    }); 


<input type="text" name="search_location" id="location-box" value="" autocomplete="off" /> 
<input type="text" name="search_terms" id="terms-box" value="" autocomplete="off" /> 

EDIT:

décommenter les lignes pour voir les événements en action de $ ('') du corps.

Espérons que c'est ce que vous cherchiez.

EDIT: Ajouté à code à l'événement keyup pour récupérer la valeur

+0

Cela a aidé une tonne! Merci! – mike