Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sugestia (podpowiadacz) + input zależny od wyboru.
Forum PHP.pl > Forum > XML, AJAX
casperii
Witam, mam następujący problem związany z połączeniem sugestii z dodatkowym inputem.
Skrypt sugestii pochodzi ze strony link

  1. function suggest(inputString){
  2. if(inputString.length == 0) {
  3. $('#suggestions').fadeOut();
  4. } else {
  5. $('#country').addClass('load');
  6. $.post("autosuggest.php", {queryString: ""+inputString+""}, function(data){
  7. if(data.length >0) {
  8. $('#suggestions').fadeIn();
  9. $('#suggestionsList').html(data);
  10. $('#country').removeClass('load');
  11. }
  12. });
  13. }
  14. }
  15.  
  16. function fill(thisValue) {
  17. $('#country').val(thisValue);
  18. setTimeout("$('#suggestions').fadeOut();", 600);
  19. }

Jak do tej pory tu wszystko działa ok.

Następnie posiadam drugi skrypt, który także działa link (już swojego autorstwa) i nie wiem jak to powiązać z tym pierwszym.

  1. <script type="text/javascript">
  2. $(document).ready(function() {
  3.  
  4. $('#test').on('keyup', function (){
  5. var input = $('input.test').val();
  6. $.getJSON('ajaxPostCode.php', {input:input}, function(data) {
  7. $('input.inputField').val(data.inputValue);
  8. alert("x" + input);
  9. });
  10. });
  11.  
  12. });
  13. </script>
  14.  
  15. <input class="test" id="test" type="text"><br>
  16. <input class="inputField" type="text" />


Na chwilę obecną po połączeniu tych dwóch skryptu to trochę to kuleje, wpisuje w input który wyświetla wyniki (podpowiada) np nazwę miasta "Konin" i jeśli do samego końca wpiszę tą nazwę to w polu kod pocztowy mi się pojawi odpowiedni kod do tego miasta, lecz jeśli wybiorę z listy tą miejscowość to już nie pojawi mi się w polu kod pocztowy.

Za wynik wyświetlania podpowiedzi odpowiedzialny jest ten fragment kodu z pierwszego skryptu:

  1. echo '<li onClick="fill(\''.addslashes($result->miasto).'\');">'.$result->miasto.'</li>';


Liczę na wasze wskazówki.
pitu
Pod pole z miastem podpięty masz event "keyup", przy wyborze sugestii nie jest on odpalany dlatego nie wykonuje się część wysyłająca request do ajaxPostCode.php.
casperii
Przerobiłem trochę kod:

  1. function suggest(inputString){
  2. if(inputString.length == 0) {
  3. $('#suggestions').fadeOut();
  4. } else {
  5. $('#city').addClass('load');
  6. $.post("ajaxCitySearch.php", {queryString: ""+inputString+""}, function(data){
  7. if(data.length >0) {
  8. $('#suggestions').fadeIn();
  9. $('#suggestionsList').html(data);
  10. $('#city').removeClass('load');
  11. }
  12. });
  13. }
  14. }
  15.  
  16. function fill(thisValue) {
  17. $('#city').val(thisValue);
  18. setTimeout("$('#suggestions').fadeOut();", 600);
  19. $.getJSON('ajaxPostCode.php', {input:thisValue}, function(data) {
  20. $('input.inputField').val(data.inputValue);
  21. });
  22. }
  23.  
  24. <div id="suggest" style="margin-left:150px;">
  25. Miasto: <input type="text" name="city" id="city" value="" onkeyup="suggest(this.value);" onblur="fill();" autocomplete="off">
  26. <div class="suggestionsBox" id="suggestions">
  27. <div class="suggestionList" id="suggestionsList"></div>
  28. </div>
  29. </div>
  30. <br><br>
  31. Kod-pocztowy: <input class="inputField" type="text" />


Teraz wygląda tak ,że jak wybiorę z listy z podpowiedzi miasto, wstawia mi kod w input - czyli jest ok. Ale musi jeszcze być tak, że jak ktoś wpiszę miasto a nie wybierze z listy - bo i przed takimi się trzeba zabezpieczyć. Co prawda na obecną chwilę wygląda tak , że user nie ma możliwości na upartego wpisywania w input miasta bo nazwa mu zniknie. Zresztą link tutaj

Aha no i konsola wywala błąd:
Uncaught TypeError: Cannot read property 'inputValue' of null
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.