当我尝试捕获表单提交时,代码陷入循环。目的是在表单出来之前替换表单的值。
$('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;
});
有没有人有任何想法?
更新:我最初将它绑定到按钮单击事件并且它正在工作但我想保留提交按钮的[enter]键元素。看到代码有点不合逻辑,抓住按键会更好吗?
答案 0 :(得分:45)
我认为您的ajax是在最终提交之前验证表单的尝试。在这种情况下,只需在提交表单之前取消绑定验证功能。
success: function(response){
$('input[name="field1"]').val(response);
// Add unbind to remove validations
$('form').unbind().submit();
}
答案 1 :(得分:6)
在成功中你触发另一次提交......
$('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;
});
答案 2 :(得分:3)
您提交表单,阻止提交仅提交表单,以防止提交... :-D