2009-12-07 8 views
5

J'ai le script JQuery Dialog ci-dessous, j'essaie de trouver comment déclencher une fonction qui efface le formulaire lorsque je ferme la boîte de dialogue.JQuery Clear Form fermer

function clearForm() 
{ 
$(':input','#calcQuery') 
.not(':button, :submit, :reset, :hidden') 
.val(''); 
}; 
// form popup 
$(document).ready(function() 
{ 
//var dataString = $("#calcQuery").serialize(); 
    $("#formBox").dialog({ 
     bgiframe: true, 
     autoOpen: false, 
     height: 600, 
     width: 400, 
     modal: false, 
     closeOnEscape: true, 
     title: "Calculator", 
     buttons: { 
      "Calculate": function() { 

// form post 
      $.ajax({ 
      type: "POST", 
      url: "calc.php", 
      data: $("#calcQuery").serialize(), 
      dataType: "html", 
      success: function(response) 
       { 
       $("#calcBox").html(response); 
       $("#calcBox").show(); 
       }, 
      error: function 
       (xhr, ajaxOptions, thrownError) 
        { 
        alert(xhr.status); 
        alert(thrownError); 
        } 



    }).responseText; 

// form post 

       } 
      } 
    }); 

$('#calcButton').click(function(){ 
    $('#formBox').dialog('open'); 
    return false; 
    }); 

}); 

$("#formBox").bind('dialogclose', function(event) 
{ 
clearForm(); 
}); 
+0

form.reset() pourrait faire l'affaire ... – NDM

Répondre

3

J'ai eu à travailler en utilisant ...

function clearForm(form) 
{ 
    $(":input", form).each(function() 
    { 
    var type = this.type; 
    var tag = this.tagName.toLowerCase(); 
     if (type == 'text') 
     { 
     this.value = ""; 
     } 
    }); 
}; 

et .....

// form post 
      $.ajax({ 
      type: "POST", 
      url: "calc.php", 
      data: $("#calcQuery").serialize(), 
      dataType: "html", 
      success: function(response) 
       { 
       $("#calcBox").html(response); 
       $("#calcBox").show(); 
       clearForm("#calcQuery"); 
       }, 
      error: function 
       (xhr, ajaxOptions, thrownError) 
        { 
        alert(xhr.status); 
        alert(thrownError); 
        } 



    }).responseText; 

// form post 

... maintenant .. comment réinitialiser les boutons radio à la valeur par défaut "GB"?

&nbsp;KB <input type="radio" name="curr_unit" value="KB" /> 
&nbsp;MB <input type="radio" name="curr_unit" value="MB" /> 
&nbsp;GB <input type="radio" name="curr_unit" value="GB" checked/> 
&nbsp;TB <input type="radio" name="curr_unit" value="TB" /> 

grâce

5

Utilisez le close event

$("#formBox").dialog({ 
     bgiframe: true, 
     autoOpen: false, 
     height: 600, 
     width: 400, 
     modal: false, 
     close: clearForm 
}); 
6

Cela réinitialisera le formulaire:

$("#form").trigger("reset"); 
+0

Pouvez-vous préciser où cette ligne devrait aller. Merci. –

+0

@FrancisRodgers Regardez ma réponse –

0
`jQuery("#form").trigger("reset");` 

place dans la fonction de réussite après le message de réussite a été affiché.
Alors ça marche parfaitement!
exemple:

success : function(){ 
jQuery('#contactsMsgs').html('<p class="success">All is well, your e&ndash;mail has been sent.</p>'); 
jQuery('#yourformname').trigger('reset'); 
spinner.hide();` 
} 
3

Plus élégant est une combinaison de vos méthodes:

... 
beforeClose: function() { 
    $("#form").trigger("reset"); 
}, 
... 

Il réinitialise votre formulaire lors de l'enregistrement, sur annuler et sur la barre de titre bouton Fermer. Exception pour les select2 qui doivent se faire manuellement:

$("#mySelect2").select2('data', null); 

dans le même beforeClose