2010-04-17 22 views
5

Duplicar posible:
Resetting a multi-stage form with jQueryBorrar el formulario una vez formulario enviado

vez que el formulario presentado, la respuesta de otra página se imprime a #GameStorySys. Pero los valores ingresados ​​a la forma aún permanecen allí. ¿Es posible que desaparezcan los valores del formulario (pero el formulario debe permanecer) una vez que se envía el formulario?

$("[name='GameStoryForm']").click(function() { 
     $.ajax({ 
      type: "POST", 
       data: $("#GameStoryForm").serialize(), 
       url: "content/commentary/index.cs.asp?Process=EditLiveCommentaryStory&CommentaryID=<%=Request.QueryString("CommentaryID")%>", 
       success: function(output) { 
       $('#GameStorySys').html(output); 
      }, 
       error: function(output) { 
       $('#GameStorySys').html(output); 
       } 
     }); 
}); 

Respuesta

3

Puede borrar de forma manual, por ejemplo:

$("[name='GameStoryForm']").click(function() { 
    $.ajax({ 
    type: "POST", 
    data: $("#GameStoryForm").serialize(), 
    url: "content/commentary/index.cs.asp?Process=EditLiveCommentaryStory&CommentaryID=<%=Request.QueryString("CommentaryID")%>", 
    success: function(output) { 
     $('#GameStorySys').html(output); 
     $("#GameStoryForm").get(0).reset(); 
     //or manually: 
     // $("#GameStoryForm :input").not(':button, :submit, :reset, :hidden') 
     //       .val('').removeAttr('checked selected'); 
    }, 
    error: function(output) { 
     $('#GameStorySys').html(output); 
    } 
    }); 
}); 
+0

muy agradable con la llamada removeAttr adicional después de val. – David

+0

$ ("# GameStoryForm"). Get (0) .reset(); Deberías hacerlo. No entendía cómo funcionaría exactamente la versión manual. Una vez que se envía el formulario ¿el usuario debe hacer clic en el botón de reinicio? – zurna

+0

@zurna - por "manual" solo me refiero a borrar programáticamente las entradas en lugar de usar la funcionalidad '.reset()' del formulario. Es un poco más explícito para que pueda ver exactamente lo que está pasando ... o dejar de lado y no borrar los elementos que no desea restablecer. –

0

lo haría con javascript:

<script> 
document.getElementById(yourFormId).onsubmit = new Function(){this.reset();} 
</script> 
0

Si se realiza el restablecimiento de la función de respuesta para consulta AJAX, se no se realizará antes de que la solicitud regrese. Si restablece el formulario en el controlador de eventos onsubmit() (como se sugiere aquí), entonces no se reiniciará (ya que envía la solicitud AJAX en el controlador click(), no en el controlador submit()).

Lo que hay que hacer es realizar el restablecimiento después de emitir la petición AJAX - es decir, después de llamar a $ .ajax() - pero no en su función de devolución de llamada cuando llama solicitud de devolución:

$("[name='GameStoryForm']").click(function() { 
    $.ajax({ 
    type: "POST", 
    data: $("#GameStoryForm").serialize(), 
    url: "content/commentary/index.cs.asp?Process=EditLiveCommentaryStory&CommentaryID=<%=Request.QueryString("CommentaryID")%>", 
    success: function(output) { 
     $('#GameStorySys').html(output); 
    }, 
    error: function(output) { 
     $('#GameStorySys').html(output); 
    } 
    }); 

    $("#GameStoryForm").get(0).reset(); 
}); 
Cuestiones relacionadas