2010-09-26 12 views
7

Así que me estoy convirtiendo una forma de "editar" en un ajaxForm con lo siguiente:Plugin jQuery Form - cómo hacer que ajaxForm() "en vivo"?

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

Esto devuelve la misma forma, que puede ser editado de nuevo, si es necesario. El segundo envío de formulario, sin embargo, ya no tiene el ajaxForm() adjunto, lo que tiene sentido.

¿Cómo me aseguro de que este formulario sea siempre un ajaxForm, sin importar cuántas presentaciones se hayan realizado, similar a cómo funciona la función live()?

Respuesta

7

Puede incluir la llamada ajaxForm en la respuesta como:

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

o podría hacerlo como parte de la función del éxito:

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

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

recomiendo este último.

+1

Hmmm, con ese segundo, ¿no le falta algo de información? ¿al final? Es como una redundancia sin fin, ¿no? – asfsadf

+0

Oh, veo lo que dices ... bueno, podrías hacer otra función ... actualización – prodigitalson

+0

Mi cerebro está en nudos. ¿De dónde vienen los 4 parámetros? Javascript es totalmente extraño para mí. Gracias. – asfsadf

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

Levemente ejemplo modificado para ajaxSubmit de http://jquery.malsup.com/form/#api.

2

probar esto

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

De la documentación:

delegación

verdadero para habilitar el soporte para la delegación de eventos requiere jQuery v1.7 +

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

¿Puede proporcionar un enlace a la documentación donde encontró esto? Busqué en http://www.malsup.com/jquery/form/ y no había ni siquiera una palabra 'delegation' – user907860

+0

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

+0

Solución realmente fácil, funcionó bien para mí, gracias tú. – jonaglon

Cuestiones relacionadas