2010-09-26 8 views
7

So drehen Ich bin ein „Bearbeiten“ Form in eine ajaxForm mit den folgenden:jQuery Form Plugin - wie man ajaxForm() "live" macht?

$('#reviewForm').ajaxForm({ 
    success: function (response) { 
     $('#bookReview').html(response); 
    } 
}); 

Dies gibt die gleiche Form, die wieder bearbeitet werden kann, falls erforderlich. Bei der zweiten Formularübergabe ist jedoch der ajaxForm() nicht mehr angehängt, was sinnvoll ist.

Wie stelle ich sicher, dass dieses Formular immer ein AjaxForm ist, egal wie viele Einreichungen stattgefunden haben, ähnlich wie die Funktion live() funktioniert?

Antwort

7

Sie können entweder schließen die ajaxForm Anruf in der Antwort wie:

<!-- the html for the form --> 
<script type="text/javascript"> 
    $('#reviewForm').ajaxForm(); 
</script> 

oder Sie es als Teil der Erfolgsfunktion tun konnte:

function ajaxify(response, status, xhr, form){ 
    var review = $('#bookReview').html(response); 
    $('form#reviewForm', review).ajaxForm({ 
     'success': ajaxify 
    }); 
} 

$('#reviewForm').ajaxForm({ 
    'success': ajaxify 
}); 

Ich empfehle die letztere.

+1

Hmmm, mit der zweite, ist es nicht ein paar Informationen fehlt. am Ende? Es ist wie eine unendliche Redundanz, oder? – asfsadf

+0

Oh ich sehe, was du sagst ... nun, du könntest es einfach zu einer anderen Funktion machen ... ill update – prodigitalson

+0

Mein Gehirn ist in Knoten. Woher kommen die 4 Parameter? Javascript ist mir völlig fremd. Vielen Dank. – asfsadf

11
$('#myFormId').live('submit', function() { 
    // submit the form 
    $(this).ajaxSubmit(); 
    // return false to prevent normal browser submit and page navigation 
    return false; 
}); 

Sligtly modifiziertes Beispiel für ajaxSubmit von http://jquery.malsup.com/form/#api.

2

versuchen, diesen

$('#reviewForm').live('submit', function() { 
    $(this).ajaxSubmit({ 
     success:function(){ 
      $('#bookReview').html(response); 
     }, 
     resetForm:true 
    }); 
    return false; 
}); 
7

Aus der Dokumentation:

Delegation

echte Unterstützung für das Ereignis Delegierung aktivieren erfordert jQuery v1.7 +

// prepare all existing and future forms for ajax submission 
$('form').ajaxForm({ 
    delegation: true 
}); 
+0

Können Sie bitte einen Link zu der Dokumentation angeben, wo Sie diese gefunden haben? Ich suchte bei http://www.malsup.com/jquery/form/ und es gab kein Wort "Delegation" – user907860

+0

https://github.com/malsup/form – younes0

+0

Wirklich einfache Lösung, funktionierte gut für mich, danke Sie. – jonaglon