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

如何使用JS添加可拖拽字段?现有动态生成字段无法拖拽如何修改

问题原因

你目前的代码失效核心是事件绑定时机不对:页面加载完成执行$('.d').draggable()的时候,你还没有通过Add按钮生成任何.d类的输入框,所以这个绑定根本没作用到后续动态生成的元素上。同时你的聚焦事件选择器层级写错了,你创建的input本身就是.d类,不存在.d下嵌套的input元素。

修改方案

直接替换原有JS逻辑即可,修改后完整代码如下:

(function() {
  var counter = 0;
  var b = document.getElementById('b');
  var l = document.getElementById('l');
  var addInput = function() {
    counter++;
    var input = document.createElement("input");
    input.id = 'input-' + counter;
    input.className = 'd';
    l.appendChild(input);
    // 每次生成新input后立即绑定拖拽能力
    $(input).draggable({
      cancel: null
    });
    // 直接给当前input绑定点击聚焦事件
    $(input).click(function() {
      $(this).focus();
    });
  };
  b.addEventListener('click', function() {
    addInput();
  }.bind(this));
})();

HTML部分无需调整,替换完成后即可实现点击Add新增输入框、所有输入框可自由拖拽、点击时正常聚焦输入的效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:06:07