The code is stuck in a loop when I try to catch a form submission. The purpose is to replace a value of the form before it goes out.
$('form').submit(function(e){
e.preventDefault();
$.ajax({
type: "POST",
url: 'convert.asp',
data: $('form').serialize(),
success: function(response){
$('input[name="field1"]').val(response);
$('form').submit();
}
});
return false;
});
Does anyone have any ideas?
UPDATE: I originally had it bound to a button click event and it was working but I wanted to preserve the [enter] key element of the submit button. Seeing that the code is kind of illogical, would catching a keypress be a better idea?
I assume your ajax is an attempt to validate the form before its eventual submission. In that case just unbind the validation function before submitting the form.
success: function(response){
$('input[name="field1"]').val(response);
// Add unbind to remove validations
$('form').unbind().submit();
}
In the success you trigger another submit...
$('form').submit(function(e){
e.preventDefault(); // redundant, you return false in the end. <<<===
$.ajax({
type: "POST",
url: 'convert.asp',
data: $('form').serialize(),
success: function(response){
$('input[name="field1"]').val(response);
$('form').submit(); // <=== delete this! <<<<=================
}
});
return false;
});
You submit your form, prevent submission only to submit the form, which gets prevented to get submitted... :-D
来源:https://stackoverflow.com/questions/9812876/infinite-loop-of-form-submit-using-jquery-event