我有一个简短的问题,我的JavaScript代码中有这样一段:
$('form').submit( function (e) {
var form = $(this);
console.log('submit attempt');
$('input, select, textarea').each(function() {
var attr = $(this).attr('required');
if (typeof attr == typeof undefined || attr == false || (attr = 'Y' && $(this).val() != '') ) {
if($(this).hasClass('numeric')) {
if(isNumber($(this).val())) {
$(form).submit();
}
}
else {
$(form).submit();
}
}
else {
e.preventDefault();
$(this).css('border','1px solid red');
}
});
});
在控制台日志中,我收到了超过1300条“提交尝试”消息,然后出现了一个错误:
Uncaught RangeError:调用栈大小超过最大值
你们有什么想法为什么会发生这种情况以及如何解决它吗?也许我忘记了submit()的一些棘手问题?
如果需要更多信息,请告诉我。
谢谢!
$(form).submit();
,因为它会导致多次递归提交表单。 - Hardik Patele.preventDefault()
的情况下到达结尾,则表单将被提交。您可以随时使用return
(要小心,不要从内联函数中返回,例如$.each
)。 - freedomn-m