Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery][AJAX]Brak wyniku dla danych w jednym polu
Forum PHP.pl > Forum > Przedszkole
@rtur
  1. jQuery(document).ready(function(){
  2. $('input.inpSong').on('change',function(){
  3. var songtitle = $('input.inpSong').val();
  4. var artid = $('input.inpArtId').val();
  5. var msgbox = $('#status');
  6. if(artid.length > 0 && songtitle.length > 0){
  7. $.ajax({
  8. type:'GET',
  9. url:'/ajax/checkSongByArtist.php',
  10. data: 'wyk=' + artid + '&utw=' + songtitle,
  11. success: function(data, textStatus) {
  12. $('#status').html(data);},
  13. })
  14. }
  15. });
  16. $('#artid').change(function(){
  17. var songtitle = $('input.inpSong').val();
  18. var artid = $('#artid').val();
  19. var msgbox = $('#status');
  20. if(artid.length > 0 && songtitle.length > 0){
  21. $.ajax({
  22. type:'GET',
  23. url:'/ajax/checkSongByArtist.php',
  24. data: 'wyk=' + artid + '&utw=' + songtitle,
  25. success: function(data, textStatus) {
  26. $('#status').html(data);},
  27. })
  28. }
  29. });
  30.  
  31. $('.inpArtist').autocomplete({
  32. source:'/ajax/ajax-artists.php',
  33. selectFirst: true,
  34. minLength:2,
  35. autoFocus: true,
  36. select:function(evt, ui) {
  37. this.form.artid.value = ui.item.wykonawca;
  38. },
  39. change:function(evt, ui) {
  40. this.form.artid.value = ui.item.wykonawca;
  41. }
  42. });
  43. });


  1. <form name="song" action="/index.php" method="post">
  2. <div id="status"></div>
  3. <ul>
  4. <li><label for="artistName">Wykonawca:</label><input type="text" name="artysta" value="" class="inpArtist" maxlength="128" id="artistName" required="" autocomplete="off"></li>
  5. <li><label for="piosenka">Tytuł:</label><input type="text" name="piosenka" id="piosenka" value="" class="inpSong" maxlength="128" autocomplete="off" required=""></li>
  6. </ul>
  7. <input type="hidden" name="artid" id="artid" class="inpArtId" value="">
  8. <input type="submit" name="wyslano" value="dodaj utwór">
  9. </form>


Mam formularz za pomocą którego dodaje utwory do bazy. Wykonawca jest pobierany z listy za pomocą jquery Autocomplete, tytuł wprowadzam ręcznie po czym po wyjściu z inputa piosenka za pomocą ajaxa następuje sprawdzenie w bazie czy utwór w powiązaniu z wykonawcą nie istnieje, jak istnieje w divie #status pojawia się odpowiedni komunikat. do ajaksa wysyłana jest zawartość z pól artid i piosenka, niestety za pomocą ajaxa sprawdza tylko wtedy kiedy wybiorę najpierw wykonawcę a potem wpisze piosenkę, co robię nie tak, że nie działa zawsze gdy wypełnione są obydwa pola, bez względu na to które wypełnię jako pierwsze?
trueblue
1. input.inpSong zmień na keydown zamiast change.
2. Skoro masz jQ autocomplete i tam odpalanie zdarzenia change, to tam umieść zawartość handlera change z input #artid.
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.