AngularJS表单预填默认值报错:b.apply is not a function
解决jQuery each报错:b.apply is not a function
嘿,我来帮你搞定这个报错!你遇到的b.apply is not a function问题,根源是调用jQuery的.each()方法时参数传错了。
你原来的代码里写了:
$(x).each(defaulttext , function (index, value){ $(element.children).val(defaulttext[index]); });
这里的核心问题是:jQuery的.each()方法只需要传入回调函数作为参数,不需要把defaulttext数组放在第一个位置。当你错误地传入数组后,jQuery会把它当成回调函数去执行,自然就触发了apply is not a function的错误。
另外还有两个小细节需要修正:
- 回调里的
element是未定义的,应该用第二个参数value(也就是当前遍历到的.form-group元素) - 直接用
children可能会选中label元素,应该精准找到.form-group里的input框
修正后的完整代码
<!DOCTYPE html> <html lang="en"> <head> <title>Bootstrap Example</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body> <div class="container"> <form> <div class="form-group"> <label for="inputdefault">Name</label> <input class="form-control" id="inputdefault" type="text"> </div> <div class="form-group"> <label for="inputlg">Email ID</label> <input class="form-control input-lg" id="inputlg" type="text"> </div> <div class="form-group"> <label for="inputlg">Phone Number</label> <input class="form-control input-lg" id="inputlg" type="text"> </div> </form> </div> <script> // 确保DOM加载完成后执行,避免找不到元素 $(document).ready(function() { var formGroups = $(".form-group"); var defaulttext = ["yogeesh", "yogeesh@gmail.com", "88616649678"]; formGroups.each(function (index, groupElement) { // 精准找到当前form-group里的input元素 var input = $(groupElement).find('input'); // 只有数组对应索引有值时才赋值,避免出现undefined if (defaulttext[index]) { input.val(defaulttext[index]); } }); }); </script> </body> </html>
关键修正点说明
- 修正
.each()调用逻辑:去掉了多余的defaulttext参数,只保留回调函数,符合jQuery的API规范 - 精准定位输入框:用
.find('input')代替直接取children,确保只选中需要赋值的输入元素 - 增加DOM加载判断:把代码放在
$(document).ready()里,避免页面未渲染完成就执行代码导致元素找不到 - 边界值保护:添加
if (defaulttext[index])判断,防止当表单组数量超过默认值数组长度时,给输入框赋值undefined
这样修改后,就能正常给每个表单字段预填默认值,也不会再出现报错啦!
内容的提问来源于stack exchange,提问作者YOGEESH
相关产品推荐
相关产品推荐

