问题
I have the below JQuery Dialog script, I'm trying to find out how to fire off a function that clears the form when I close the dialog.
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();
});
回答1:
This will reset the form:
$("#form").trigger( "reset" );
回答2:
Use the close event
$("#formBox").dialog({
bgiframe: true,
autoOpen: false,
height: 600,
width: 400,
modal: false,
close: clearForm
});
回答3:
I got it to work by using ...
function clearForm(form)
{
$(":input", form).each(function()
{
var type = this.type;
var tag = this.tagName.toLowerCase();
if (type == 'text')
{
this.value = "";
}
});
};
and .....
// 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
... now .. how do I set the radio buttons back to the default of "GB" ?
KB <input type="radio" name="curr_unit" value="KB" />
MB <input type="radio" name="curr_unit" value="MB" />
GB <input type="radio" name="curr_unit" value="GB" checked/>
TB <input type="radio" name="curr_unit" value="TB" />
thanks
回答4:
More elegant is a combination of your methods:
...
beforeClose: function() {
$("#form").trigger("reset");
},
...
It will reset your form on save, on cancel and on title bar close button. Exception for select2 which have to be done manually:
$("#mySelect2").select2('data', null);
inside the same beforeClose
回答5:
`jQuery("#form").trigger( "reset" );`
place it into the success function after the success message has been displayed.
Then it works perfectly!
example:
success : function(){
jQuery('#contactsMsgs').html('<p class="success">All is well, your e–mail has been sent.</p>');
jQuery('#yourformname').trigger( 'reset' );
spinner.hide();`
}
来源:https://stackoverflow.com/questions/1860675/jquery-clear-form-on-close