jquery - 未捕获的 RangeError:在实现所需的字段验证时超出了最大调用堆栈大小
问题描述
$(document).ready(function(){
$("form").submit(function(e) {
e.preventDefault();
var empty_count = 0;
$('.required').each(function() {
if ($(this).val() === '') {
empty_count++;
console.log($(this).val());
$(this).addClass('error');
}
else {
$(this).removeClass('error');
}
});
console.log(empty_count);
if (!empty_count) {
$("form").submit();
}
});
});
.error {
border-width:2px;
border-color:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<h2>User Registration</h2>
<form id='user-register' action='/user-register.php' method='post' enctype="multipart/form-data">
<input type='text' name='first_name' class="required" placeholder=''/><br><br>
<input type='text' name='last_name' class="required" placeholder=''/><br><br>
<input type='email' name='email' class="required" placeholder=''/><br><br>
<label>Profile Photo<br></label>
<input type="file"
id="user_profile_photo" name="user_profile_photo"
accept="image/png, image/jpeg, image/jpg"><br><br>
<!-- <input type='submit' name='file_submit'/><br><br> -->
<input class="required" type='password' name='password' placeholder='*****'/><br><br>
<input class="required" type='password' name='confirm_password' placeholder='*****'/><br><br>
<input type='submit' name='register'/><br><br>
</form>
</div>
我已经实现了一个代码来在空的字段周围显示红色边框,并使用如上所示的 jquery 代码,但它会导致循环。我该如何解决?
解决方案
为了避免无限的表单提交,您应该unbind
从它之前submit
:
if (!empty_count) {
$("form").unbind().submit();
}
推荐阅读
- java - 将Java中的对象列表序列化为json
- r - R Leaflet Shiny:shape_click$id 为 NULL
- jenkins - 如何在 Jenkinsfile 中捕获分支名称
- list - aVdin 8 中的样式列表选择
- codeigniter - 如何在codeigniter中添加外键迁移?
- gremlin - Gremlin 用例 - Int 属性和 coalesce()
- elasticsearch - 如何使 Elasticsearch 匹配包含句号作为单词分隔符的文档
- php - 大商取货不更新
- java - 错误:“无法从 NUMERIC 单元格获取 STRING 值”,转换 Excel 时
- repository - Gitlab:将存储库的本地副本恢复为云上代码的当前版本