jquery.form: Bir sayfada birden fazla form ayarlamak nasıl?

1 Cevap php

i "sil" butonuna ile isimleri bir liste var, her satır bir formudur ve listesini silmek tıklayarak gerçek zamanlı olarak güncellenmesi gerekir ama işler çünkü bu eklenti i (infact zaman içinde çalışan tek bir id ayarlayabilirsiniz yok tek bir isim var liste)

Bu javascript işlevi:

$(document).ready(function() {      
var options = {          
target:        '#risposta',   
resetForm: true,      
success: function(showResponse) {
$("#lista_categorie").load("categorie.php").show('fast');
$('#risposta').fadeIn(2000),setTimeout(function({$('#risposta').fadeOut(1000);},5000);}};
$('#elimina_categoria').ajaxForm(options);  
}); 

html formu php ile inşa edilir:

<form action="categorie_elimina.php?id=$row['id']" method="post" id="elimina_categoria">
<p>$row['nome'] 
<input type="submit" id="submit_pro" value="elimina" class="elimina"></p>
</form>

i (örneğin satır kimliği kullanarak) her bir form için farklı bir kimlik oluşturmanız gerekir ama ben her şekilde bu hat bu işlevi izlemeniz gereken js fonksiyonu söylemelidir:

$('#elimina_categoria').ajaxForm(options);  

ben de bu kod kullanılır:

$('[id|=elimina_categoria]').ajaxForm(options);

but this only works at first click, clicking the second time it opens the php script.. hope you can help me, sorry for bad english

1 Cevap

Öncelikle:

Bunun yerine aynı kimliğe sahip birçok formları oluşturmak yerine, aynı sınıf ile çeşitli formları oluşturmanız gerekir. ID-özniteliği için aynı değeri sadece bir kez kullanılmalıdır. Örnek

<form id="elimina_categoria_1" class="elimina_categoria"> ... </form>
<form id="elimina_categoria_2" class="elimina_categoria"> ... </form>

Mümkünse olsa _2 ... _1 daha açıklayıcı adlandırma kullanın.

Her form aynı sınıf varsa, kullandığınız ajaxForm (seçenekleri) çağırabilirsiniz

$('form.elimina_categoria').ajaxForm(options)

İkincisi:

Muhtemelen aradığınız script gibi bir şeydir

function eliminaCategoria() {
   var eliminaForm = $(this).parent().parent(); // Select the form of the button
   $.post(eliminaForm.val('action')); // Call the action defined by the form
   eliminaForm.remove(); // Remove the form-element from the page. 
   return false; // don't let the submit-button submit the form. 
}

$(document).ready( function() {
  $('.elimina').bind('click', eliminaCategoria);
});

Mevcut durumda olduğu gibi-komut işe yaramayabilir, ama bu ileri size yardımcı olur umarım. Muhtemelen kullanılan ve sayfasından formu silmeden önce HTTP POST isteği sonuçlarını kontrol etmek isteyebilirsiniz FadeIn, FadeOut efektler eklemek istiyorum.