2010-12-28 10 views
0

Ich verwende das Autocomplete-Skript jQuery für ein Texteingabeelement, aber das Problem besteht darin, dass die lang-Variable im Quell-URI nicht aktualisiert wird, wenn die Variable aktualisiert wird.jQuery Autocomplete-Quellparameter wird nicht aktualisiert

Der Wert von lang wird aktualisiert, wenn ich auf ein Radioeingabeelement klicke und danach etwas in das Texteingabeelement eintippe, das dann den Autocomplete-Code auslöst. Seltsamerweise verwendet es immer den Wert "en" und nicht den aktualisierten Wert.

Kennt jemand einen besseren Ansatz oder eine Lösung für meinen Code?

Code:

var lang = 'en'; 

$('input[name="language"]').click(function() 
{ 
    lang= $(this).val(); 
}); 

$("#query").autocomplete({ 
    source: "domain.com/suggest.php?language=" + lang, 
    minLength: 1 
}); 

Antwort

1

Die Lösung, um eine benutzerdefinierte AJAX-Aufruf erstellen ist:

source: function(request, response) 
    { 
     $.ajax({ 
      url: 'domain.com/suggest.php', 
      dataType: "json", 
      data: {language: $('input[name="language"]:checked').val(), term: $('#query').val()}, 
      success: response 
     }); 
    }, 

Hope this zu anderen hilft.

1

Das Click-Ereignis tritt ein, wenn Sie auf der Auswahl klicken, nicht, wenn Sie die Werte ändern. So lang wird wahrscheinlich der aktuelle Wert der Auswahl neu zugewiesen, was, wenn es englisch ist, nach Änderung des Auswahlwertes auf Englisch bleibt. Was Sie wahrscheinlich bedeuten, zu tun ist:

$('input[name="language"]').change(function() 
{ 
    lang= $(this).val(); 
}); 
+1

Warum nicht einfach $ verwenden ("input [namen = "language"] '). val() anstelle der lang var sofort? – Mantar

+0

Da der Wert des aktivierten Optionsfelds ('$ ('input [name =" language "]: checked'). Val()') ebenfalls nicht funktionierte. Da ich dachte, dass es etwas mit der überprüften Option der Optionsfelder zu tun hatte, die Probleme verursachten, hoffte ich auf diese Methode, um es zu lösen. Leider hat es das gleiche Ergebnis. – EarthMind

+0

Wenn $ ('input [name = "language"]') .val() den ausgewählten Wert nicht zurückgibt, dann liegt Ihr Problem vor. (Verwenden Sie console.log() und Firebug, um zu überprüfen) – Mantar

0

Sie sollten die Funktion zum automatischen Vervollständigung in der Klick oder Änderungsfunktion einbetten, so dass jedes Mal, wenn Sie ein anderes Optionsfeld auswählen, die zum automatischen Vervollständigung erneut initialisiert wird:

var lang = 'en'; 

$('input[name="language"]').click(function() 
{ 
    lang= $(this).val(); 


$("#query").autocomplete({ 
    source: "domain.com/suggest.php?language=" + lang, 
    minLength: 1 
}); 

});