Witam, pracuję nad dodatkiem, który wyświetla mi okienko z obrazkiem (coś jak captcha - od strony php jest wszystko ok, generowanie itp.).
Mam jednak problem z jQuery i z ajaxowaniem tego formularza.

Póki co korzystałem ze stałego kodu na ajax:
  1. $('input[name="zatwierdz_kod"]').click(function(){
  2. $.ajax({
  3. url: "ajax.php",
  4. timeout: 5000,
  5. error: function(){
  6. alert('Błąd - Zatwierdz kod');
  7. },
  8. data: "kod="+ $('input[name="kod_captcha"]').val()+"&co=zatwierdz_kod",
  9. type: "POST",
  10. success: function(html){
  11. $("#przepisz_kod").html(html);
  12. }
  13. });
  14. });


Czyli tłumacząc:
Funkcja włącza się po kliknięciu guzika zatwierdz_kod, kod php odpowiedzialny za sprawdzenie jest w ajax.php, efekt tego działania jest wyświetlany do divie #przepisz_kod.

Wszystko działa ok, póki nie pomylimy się podczas przepisywania, bądź też gdy jest tylko 1 kod do przepisania.
W innym wypadku, ajax w ogóle się nie ładuje.

Tłumacząc dokładniej:
Jeśli skrypt ajax.php wykryje niepoprawność kodu zwraca ten formularz jeszcze raz (wygląda dokładnie tak samo, w tym samym divie), tyle że tym razem w ogóle guzik Zatwierdź nie odpowiada (po kliknięciu nawet nie ładuje ajaxa).

------------

Inna sprawa, jeśli chodzi o wiele pól z kodem - tutaj, po naciśnięciu Zatwierdź, wysyła do pierwszego elementu, bez znaczenia czy to 5 czy 1 guzik.

Czytałem coś o "this" jednak tutaj jest taki problem, że schemat wygląda tak:
  1. <div id='przepisz_kod'>
  2. <img src='".$obrazek."' style='border: 1px solid #000' /><br/>
  3. <input type='text' name='kod_captcha' onkeydown=\"enter('zatwierdz_kod', event.keyCode)\" style='width: 200px'/>
  4. <input type='button' class='dodajbtn' value='Zatwierdź' name='zatwierdz_kod' /></div>
  5. </div>

Tak więc treść jest w przepisz kod a nie jakby wg "this" pakowało do zatwierdz_kod.

Z góry dzięki za pomoc.
Miłego dnia.

// edit:

naprawione 2 opcje:
  1. $('input[name="zatwierdz_kod"]').live('click', function() {
  2. var $this = $(this);
  3. $.ajax({
  4. url: "ajax.php",
  5. timeout: 5000,
  6. error: function(){
  7. alert('Błąd - Zatwierdz kod');
  8. },
  9. data: "kod="+ $('input[name="kod_captcha"]').val()+"&sid="+ $('input[name="sid_captcha"]').val()+"&co=zatwierdz_kod",
  10. type: "POST",
  11. success: function(html){
  12. $this.parent().html(html);
  13. }
  14. });
  15.  
  16. });