You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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>

关键修正点说明

  1. 修正.each()调用逻辑:去掉了多余的defaulttext参数,只保留回调函数,符合jQuery的API规范
  2. 精准定位输入框:用.find('input')代替直接取children,确保只选中需要赋值的输入元素
  3. 增加DOM加载判断:把代码放在$(document).ready()里,避免页面未渲染完成就执行代码导致元素找不到
  4. 边界值保护:添加if (defaulttext[index])判断,防止当表单组数量超过默认值数组长度时,给输入框赋值undefined

这样修改后,就能正常给每个表单字段预填默认值,也不会再出现报错啦!

内容的提问来源于stack exchange,提问作者YOGEESH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:01:24