2010-04-17 7 views
5

Possible en double:
Resetting a multi-stage form with jQueryEffacer le formulaire formulaire une fois soumis

Une fois le formulaire soumis, la réponse d'une autre page est imprimée à #GameStorySys. Mais les valeurs entrées dans le formulaire restent toujours là. Est-il possible que les valeurs de formulaire disparaissent (mais le formulaire doit encore rester) une fois le formulaire soumis?

$("[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); 
       } 
     }); 
}); 

Répondre

3

Vous pouvez effacer manuellement, par exemple:

$("[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

Très belle l'appel removeAttr supplémentaire après val. – David

+0

$ ("# GameStoryForm"). Get (0) .reset(); devrait le faire. Je n'ai pas compris comment exactement la version manuelle fonctionnerait. Une fois que le formulaire est soumis, l'utilisateur doit cliquer sur le bouton de réinitialisation? – zurna

+0

@zurna - par "manuel" Je veux juste dire effacer par programmation les entrées au lieu d'utiliser la fonctionnalité '.reset()' du formulaire. C'est juste un peu plus explicite, donc vous pouvez voir exactement ce qui se passe ... ou laisser de côté et ne pas effacer les éléments que vous ne voulez pas réinitialiser. –

0

je le ferais avec javascript:

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

Si vous effectuez la réinitialisation de la fonction de réponse pour la requête AJAX, il ne sera pas fait avant le retour de la demande. Si vous réinitialisez le formulaire dans le gestionnaire d'événement onsubmit (comme suggéré ici), il ne sera pas réinitialisé du tout (puisque vous envoyez la requête AJAX dans le gestionnaire click(), pas dans le gestionnaire submit()).

Ce que vous devez faire est de réaliser la remise à zéro après l'émission de la demande AJAX - qui est, après avoir appelé .ajax $() - mais pas dans sa fonction de rappel appelée lors du retour de demande:

$("[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(); 
}); 
Questions connexes