2010-11-22 26 views
0

Aynı formun her gönderiminde kullanmak istediğim global bir formum var ve bu form otomatik olarak veritabanından kaç tane iş parçacığı üretildiğine bağlı olarak oluşturuluyor . Bu yüzden sayfa yüklendiğinde aynı türden iki veya dört form olabilir. Ayrıca, bu tür bir form ajax yoluyla belirli istek üzerine sayfaya yüklenir. ve en önemlisi - tüm bu form aynı gönderme işlevini kullanacaktır. Örneğinjquery: aynı form ajax ile yüklendiğinde yinelenen gönderim olayları

,

html aşağıda

<div class="form"></div> 
<a href="form.php" class="load">load</a> 

<div> 
<form action="#" method="post" enctype="multipart/form-data" class="form-global"> 
    <textarea name="str_content" title="Write a comment..."></textarea> 
    <input type="submit" name="submit" value="SUBMIT" class="button-public left"/> 
</form> 
</div> 

<div> 
<form action="#" method="post" enctype="multipart/form-data" class="form-global"> 
    <textarea name="str_content" title="Write a comment..."></textarea> 
    <input type="submit" name="submit" value="SUBMIT" class="button-public left"/> 
</form> 
</div> 

jquery çalışma kodu

$(document).ready(function() { 

    sumbitform(); 

    $(".load").click(function() { 
     var path = $(this).attr('href'); 

     $('.form').load(path, {}, function(){ 

      sumbitform(); 

      //$(this).bind("submit", sumbitform); 
     }); 

     return false; 
    }); 


}); 

this.sumbitform = function(){ 

    $("form.form-global").submit(function(){ 
     alert('1'); 
     return false; 
    }); 
} 

tüm formları

sayfa yüklendiğinde, normal olarak çalışmaya, sadece gönderme Her formda bir kez olur. ama problem, ajax ile aynı türden yeni bir form yüklendiğinde ortaya çıkar, diğer mevcut formlar iki kez tetiklenir.

Eğer http://nano-visions.net/dump/jquery.ajaxsubmit/

nasıl bu sorunu çözebilirsiniz, bu bağlantıyı sorunu görebilirsiniz

? Gönderme işlevini ajax yüklenen forma yalnızca aşağıdaki bu satır gibi ekleyebilir miyim?

$(this).bind("submit", sumbitform); // doesn't work obviously 

veya başka herhangi bir daha iyi fikir?

Teşekkürler.

cevap

1

Bunun yerine $(this).live("submit", sumbitform); kullanmanız gerekir. Bu, aynı olayı daha sonra ortaya çıkan öğelere, yalnızca şu anda olanlara değil, bağlayacaktır.

Daha fazla bilgi için bkz. live in the jQuery docs.

+0

Teşekkürler. Sadece denedim ama çalışmıyor. Bu kodu değiştirmek mi istiyorsun? . $ ('Form') yük (yol, {}, function() { \t \t \t \t \t \t $ (this) .live ("Gönder", sumbitform); \t \t}); – laukok

+0

Kodunuzdan yola çıkarak, "$ (" form.form-global ") 'i değiştirmeniz gerektiğini düşünüyorum.dota (...)' dan $ ("form.form-global"). Live ("submit") ...) ' –

+0

şimdi çalışıyor! çok teşekkürler! – laukok