Autor Zpráva
fojta
Profil *
Zdravím,
tento script bude pro vícesouborový upload na server. Mám odkaz, ktery me pridava pod sebe file input, odkaz na jeho odebrani a nahrat. Pridavani a odebirani inputu funguje skvele. Odkaz nahrat ma udelat jedine a to, ze si Jquery posle POST do php.php, ktery ji vrati JSON s nazvem obrazku. A pote by se mel ten obrazek zobrazit nad inputama v danem Divu. Problem je v tom, ze kdyz si naklikam treba deset inputu. Kliknu u prvniho nahrat, tak se me zobrazi tolik obrazku kolik je inputu, kdyz klikam postupne dolu tak vzdy o jeden mene. Ten input tam je jen tak, jde me o to ze me zatim nefunguje ten ajax tak, aby me nahraj jenom jeden obrazek. Vubec nechapu proc se nahrava vice obrazku. Jsem PHPkar, JavaScript jen pasivne kdyz neco potrebuju, tak se k tomu vzdy nejak dopatlam :)

Prikladam jen HTML v PHP je v poradku.
$(document).ready(function(){
    
    var i = 1; 
    
    $("a#addInput").click(function(){      
      $("#inputs").append(function(){
        var input = "";
        input += "<div class=\"file\">"
        input += i + ". <input type=\"file\" name=\"file[]\" />";
        input += " <a href=\"javascript:void(0);\" class=\"deleteInput\">odebrat</a>";
        input += " <a href=\"javascript:void(0);\" class=\"upload\">nahrat</a>"
        input += "</div>";
        i++;
        
        return input;
      });       
      
      $("a.upload").click(function(){   
        
        $(this).prev().prev().hide();
        $(this).prev().hide();
        $(this).hide();        
        
        $(this).ajaxStart(function(){
          $(this).parent().append(" Uploading");
        });
        
        $.post("php.php", { test: "ahoj"  },
      	  function(data){
      	    $("<img/>").attr("src", data["text"]).attr("width", 40).appendTo("#values");
      	  }, 
          "json"
        );
        
        $(this).ajaxStop(function(){
          $(this).parent().fadeOut();
        });        
      });             
      
      $("a.deleteInput").click(function(){  
        $(this).parent().fadeOut(1000);
      });        
    });
      
  });     

<a href="javascript:void(0);" id="addInput">pridej dalsi</a><br />

<div id="values">
</div>

<div id="inputs">
</div>
[pre][/pre]

Předem děkuji za každou radu :)
Tori
Profil
Myslím, že příčina by mohla být v selektoru:
  $("a.upload").click(function(){   

nahrání obrázku se tedy po kliknutí na a.upload spustí n-krát podle toho, kolik je prvků této třídy na stránce. Zkuste se podívat na vlastnosti objektu event v dokumentaci JQuery

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0