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

如何让jquery.dynamiclist适配新版本jQuery(1.11.1)正常运行?

适配jQuery 1.11.1的解决方案

这个问题我之前碰到过,核心原因是jQuery 1.6+版本对attr()方法的行为做了明确调整——旧版里attr("value")还能勉强拿到输入框的实时值,但新版本中它只会返回元素初始化时的value属性值,用户输入的动态内容得用val()方法来获取。咱们分两步来解决:

第一步:修复表单提交的取值逻辑

你提交表单时的取值代码用了element.attr("value"),这就是导致值为undefined的直接原因。把它换成element.val()就行,修改后的代码如下:

(function($) {
  $(document).ready(function() {
    $("#example1").dynamiclist();

    // 处理表单提交并展示数据
    $("form").submit(function(event) {
      event.preventDefault();
      var data = "";
      $(this).find("input, select").each(function() {
        var element = $(this);
        if (element.attr("type") !== "submit") {
          data += element.attr("name");
          data += "=";
          data += element.val(); // 关键修改:用val()替代attr("value")
          data += "; ";
        }
      });
      alert(data);
      location.reload(true);
    });
  });
})(jQuery);

第二步:检查插件内部的兼容性(如果第一步还不够)

如果修改后动态添加的输入框还是无法正常取值,那可能是jquery.dynamiclist插件本身依赖了旧版jQuery的API。你可以打开插件源码,做以下检查和修改:

  • 查找所有用attr("value")设置或获取输入框值的地方,全部替换成val()
  • 如果插件用了已废弃的live()方法,改成on()(1.11.1还兼容bind(),但on()是更推荐的现代写法)

举个例子,如果插件里有这样的代码:

$(".list-item input").attr("value", defaultValue);

改成:

$(".list-item input").val(defaultValue);

验证效果

做完上面的修改后,再提交表单,就能正确获取所有输入框(包括动态添加的)的实时值了,不会再出现undefined的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:44:47