2010-04-17 15 views
5

Eventuali duplicati:
Resetting a multi-stage form with jQueryCancellare il modulo una volta formulario presentato

volta che il modulo presentato, risposta da un'altra pagina viene stampato #GameStorySys. Ma i valori inseriti nel modulo rimangono comunque lì. È possibile che i valori del modulo scompaiano (ma il modulo dovrebbe rimanere) una volta inviato il modulo?

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

risposta

3

È possibile cancellare manualmente, ad esempio:

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

Bellissima con la chiamata removeAttr aggiuntiva dopo val. – David

+0

$ ("# GameStoryForm"). Get (0) .reset(); dovrebbe farlo Non ho capito come funzionerebbe esattamente la versione manuale. Una volta inviato il modulo, l'utente deve fare clic sul pulsante di ripristino? – zurna

+0

@zurna - per "manuale" Intendo solo cancellare a livello di codice gli input anziché utilizzare la funzionalità '.reset()' del modulo. È solo un po 'più esplicito in modo da poter vedere esattamente cosa sta succedendo ... o lasciare fuori e non cancellare tutti gli elementi che non si desidera ripristinare. –

0

lo farei con javascript:

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

Se si esegue il ripristino in funzione di risposta per la domanda AJAX, è non sarà effettuato prima che la richiesta ritorni. Se si ripristina il modulo nel gestore di eventi onsubmit() (come suggerito qui), non verrà reimpostato affatto (poiché si invia la richiesta AJAX nel gestore click(), non nel gestore submit()).

Quello che dovete fare è eseguire il reset dopo l'emissione della richiesta AJAX - cioè, dopo aver chiamato $ .ajax() - ma non nella sua funzione di callback chiamato quando richiesta restituisce:

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