添加/删除字段的 Javascript 函数

2023-12-21

我对 JavaScript 的经验不是很丰富,但这段代码与我正在寻找的代码类似,特别是其中包含“删除字段”链接的地方。这是 JavaScript 函数:

//Add more fields dynamically.
function addField(field,area,limit) {
    if(!document.getElementById) return; //Prevent older browsers from getting any further.
    var field_area = document.getElementById(area);
    var all_inputs = field_area.getElementsByTagName("input"); //Get all the input fields in the given area.
    //Find the count of the last element of the list. It will be in the format '<field><number>'. If the 
    //      field given in the argument is 'friend_' the last id will be 'friend_4'.
    var last_item = all_inputs.length - 1;
    var last = all_inputs[last_item].id;
    var count = Number(last.split("_")[1]) + 1;

    //If the maximum number of elements have been reached, exit the function.
    //      If the given limit is lower than 0, infinite number of fields can be created.
    if(count > limit && limit > 0) return;

    if(document.createElement) { //W3C Dom method.
        var li = document.createElement("li");
        var input = document.createElement("input");
        input.id = field+count;
        input.name = field+count;
        input.type = "text"; //Type of field - can be any valid input type like text,file,checkbox etc.
        li.appendChild(input);
        field_area.appendChild(li);
    } else { //Older Method
        field_area.innerHTML += "<li><input name='"+(field+count)+"' id='"+(field+count)+"' type='text' /></li>";
    }
}

以下是该表单的 HTML:

<form name="frm" method="POST">
<strong>Neutral List</strong><br />
<ol id="neutrals_area">
<li><input type="text" name="neutral_1" id="neutral_1" /> <a style="cursor:pointer;color:blue;" onclick="this.parentNode.parentNode.removeChild(this.parentNode);">Remove Field</a></li>
<li><input type="text" name="neutral_2" id="neutral_2" /> <a style="cursor:pointer;color:blue;" onclick="this.parentNode.parentNode.removeChild(this.parentNode);">Remove Field</a></li>
<li><input type="text" name="neutral_3" id="neutral_3" /> <a style="cursor:pointer;color:blue;" onclick="this.parentNode.parentNode.removeChild(this.parentNode);">Remove Field</a></li>
<li><input type="text" name="neutral_4" id="neutral_4" /> <a style="cursor:pointer;color:blue;" onclick="this.parentNode.parentNode.removeChild(this.parentNode);">Remove Field</a></li>
<li><input type="text" name="neutral_5" id="neutral_5" /> <a style="cursor:pointer;color:blue;" onclick="this.parentNode.parentNode.removeChild(this.parentNode);">Remove Field</a></li>
</ol>
<input type="button" value="Add Neutral Field" onclick="addField('neutrals_area','neutral_',0);" />
</form>

但是,我希望使用“删除链接”代码生成其他字段,而不仅仅是脚本中包含代码的字段。我知道必须调整自定义函数以包含该行为,但在尝试使该函数正常工作时遇到了各种麻烦。在旧方法中,在 addField 函数底部的“} else {”之后,通过编辑代码来执行此操作似乎很简单:

} else { //Older Method
    field_area.innerHTML += "<li><input name='"+(field+count)+"' id='"+(field+count)+"' type='text' /><a style="cursor:pointer;color:blue;" onclick="this.parentNode.parentNode.removeChild(this.parentNode);">Remove Field</a></li>";
}

但是,我很困惑如何将它包含在 W3C DOM 方法中?


删除那些if(!document.getElementById) and if(document.createElement)状况。每个浏览器都支持它们,那些不支持的浏览器不值得支持(让他们抛出错误)。

要将删除方法添加到 DOM 创建的元素,只需使用onclick财产。您还可以使用符合标准的 addEventListener() https://developer.mozilla.org/en/DOM/element.addEventListener,但这需要一些针对 IE 的解决方法。参见章节旧版 Internet Explorer 和 AttachEvent https://developer.mozilla.org/en/DOM/element.addEventListener#Legacy_Internet_Explorer_and_attachEvent and 注册事件监听器的旧方法 https://developer.mozilla.org/en/DOM/element.addEventListener#Older_way_to_register_event_listeners.

所以代码是

...
li.appendChild(document.createTextNode(" ");
var a = document.createElement("a");
a.appendChild(document.createTextNode("Remove Field"));
a.style = "cursor:pointer;color:blue;";
a.onclick = function() {
    // this.parentNode.parentNode.removeChild(this.parentNode);
    // nay. we have better references to those objects:
    field_area.removeChild(li);
};
li.appendChild(a);

http://jsfiddle.net/wtX7Y/2/ http://jsfiddle.net/wtX7Y/2/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

添加/删除字段的 Javascript 函数 的相关文章

  • 如果对象包含在另一个数组中,则从数组中删除该对象

    我试图从数组中删除一个对象 如果该对象的属性 唯一 包含在另一个数组中 我知道我可以像这样执行嵌套 for 循环 for i 0 i lt array length i for j 0 j lt array2 length j if arr
  • 在 plpgsql 函数中使用 quote_ident()

    我是创建 plpgsql 函数的新手 我需要一些有关在函数内部执行的动态命令上使用 quote ident 甚至 quote literal 的说明 希望有人能给我一个关于它们如何在函数内部工作的具体解释 TIA 这是一个例子 EXECUT
  • 如何使用 selenium 和 Mocha 获取 xPath() 选择的锚标记的文本

    我已经成功选择了 a 标签 我想显示锚标记的文本 但无法这样做 我正在使用 selenium mocha javascript 和 phantomJS 这是我的脚本 详细 var assert require assert var test
  • 用隐藏单元格补充 colspanned 表格有什么不好吗?

    我一直在表格上开发一些排序和选择功能 我发现在具有跨单元格的表格中定位非常困难 我只是添加了跨区单元格并将其隐藏 它看起来不错 它与我的 js 一起工作 非常适合索引 但我想知道这是否是合法的方法 stuffing display none
  • VBA / HTML / jQuery 选择自动完成 - 在列表中选择

    我正在尝试使用 Excel 中的 VBA 在网站的列表中选择一个值 这不是一个 正常列表 该网站使用 jQuery 选择自动完成 如下所示 example http davidwalsh name demo jquery chosen ph
  • 非 DOM 对象上的 jQuery 自定义事件

    我最近阅读了一些代码 其功能如下 bob name Bob Smith rank 7 bob bind nameChanged function bob trigger nameChanged 这似乎有效 但我在 jQuery 文档或源代码
  • Jquery从下拉列表中获取所选值的id

    我有一个下拉列表 可以从数据库获取值 如下所示 get getJobs function jobs seljobs jobs var i 0 jobs forEach function n alert job id n id 32 67 4
  • 动画进度元素值

    我有一个progress元素 该元素如下所示 div class container div div div
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 如果链接包含特定文本,jQuery 将类添加到 href

    我的网站上的列表中有一些动态填充的链接 这些链接链接到文件 是否可以使用 jQuery 查看文件名是否以 pdf 结尾 并在 href 或类似的链接文本以 mp3 结尾时添加一个类 例如 我的列表中有以下链接 文件1 pdf 歌曲1 mp3
  • 如何流式传输 OpenAI 的完成 API?

    我想流式传输结果通过 OpenAI 的 API 完成 https beta openai com docs api reference completions 该文档提到使用服务器发送的事件 https developer mozilla
  • 如何在 Angular 中从父组件访问子组件?

    I have mat paginator在子组件a中 如下所示 子组件 html
  • 如何将送货地址复制到帐单地址

    我想知道是否可以将送货地址复制到帐单地址 当用户单击与送货地址相同的复选框时 送货地址值将被复制到账单输入字段 我完成了大部分部分 但我不确定如何将选择菜单 状态 值复制到帐单地址 我真的很感谢任何帮助 My code document r
  • Twitter 嵌入时间轴小部件

    我继续下载http platform twitter com widgets js http platform twitter com widgets js And the http platform twitter com embed t
  • Select2 下拉列表动态添加、删除和刷新项目

    这让我发疯 为什么 Select2 不能在其页面上实现清晰的方法或示例如何在 Select2 上进行简单的 CRUD 操作 我有一个 select2 从 ajax 调用获取数据
  • 如果数字小于 10,则显示前导零 [重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript 相当于 printf string format https stackoverflow com questions 610406 javascript equivalent t
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 如何在 javascript 正则表达式中匹配平衡分隔符?

    我原以为这个问题是不可能的 据我所知 Javascript 的正则表达式既没有递归插值 也没有漂亮的 NET 平衡组功能 但问题就在那里 如问题 12 所示正则表达式 alf nu http regex alf nu 匹配平衡对 lt an
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值

随机推荐

  • OutputCache 使用 PostBack 返回无效版本

    我在输出缓存方面遇到了一个奇怪的问题 我在一个页面上有多个用户控件 其中一个是登录控件 页面和登录控件不会被缓存 但其他用户控件会使用 VaryByParam 进行缓存 现在 当我点击不同的页面时 所有这些都与缓存一起工作 但一旦我登录 该
  • C#:爬虫项目

    我可以很容易地遵循以下代码示例吗 使用浏览器控件向目标网站发起请求 捕获来自目标网站的响应 将响应转换为 DOM 对象 迭代 DOM 对象并捕获 FirstName LastName 等内容 如果它们是响应的一部分 thanks 以下代码使
  • 如何不将属性与 JSON 数据绑定

    这是我的模型 public sealed class UserModel Key Required StringLength 20 MinimumLength 4 public string Username get set Require
  • Jquery.validate - 一页 - 多个表单,一个提交正常,其他不提交

    在我的页面上 我有 3 个完整的表单 每个表单都有自己的提交按钮 每个表单和按钮都有不同的 id
  • 在浏览器中查看 JSON 文件

    这不是一个编程问题 但需要您三言两语表达自己的看法 当我们在浏览器中点击 JSON url 时 它会要求我们保存文件 为什么会出现这种情况 有什么办法可以在页面本身上查看它吗 是否有任何插件可用于在浏览器中查看 JSON 文件 在 Chro
  • 如何用js或jquery使小图像从屏幕的一侧移动到另一侧?

    我有一个小型动画飞机 上面写着 欢迎来到该网站 我希望它从左屏幕循环移动到右屏幕 刚出来 然后就消失了 现在 我知道这可以用 JS 完成 但我不知道 在JS中移动一张图片是不是很困难 在 的帮助下 animate https api jqu
  • 除了函数之外的任何类型的 Typescript 泛型类型

    structuredClone or lodash cloneDeep无法克隆函数 有没有办法从泛型中排除函数类型 I tried object Exclude
  • 输出奇怪,不符合预期

    很抱歉问你一个愚蠢的问题 但我就是不明白为什么我一直得到这个输出 所以这是我的代码 include
  • 詹金斯声明式管道。 post 块中的条件语句

    有一个詹金斯管道 构建成功时需要 想要发送电子邮件 有关所有分支机构的电子邮件至邮件列表 1并过滤主分支的构建邮件列表主控 我尝试使用if and when语句步骤 但两者都在 post 块中失败 pipeline agent stages
  • 如何配置我的无服务器 YML 以使用我的 API 网关授权方?

    我正在跟进this https docs aws amazon com en us apigateway latest developerguide apigateway integrate with cognito html使用 Cogn
  • 嵌入 Google 地图

    我在我的网站中嵌入了谷歌地图 我想根据用户输入更改其位置 我怎样才能做到这一点 我尝试复制该位置的链接并将其分配给iframe src iframe attr src https maps google co in maps q USA h
  • 在 Maven 生命周期映射中为现有插件提供配置

    我想提供一个带有自定义的 Maven 插件
  • 将列表拆分为 N 大小的较小列表[重复]

    这个问题在这里已经有答案了 我试图将一个列表分成一系列较小的列表 我的问题 我的拆分列表功能不会将它们拆分为正确大小的列表 它应该将它们拆分为大小为 30 的列表 但却将它们拆分为大小为 114 的列表 如何让我的函数将列表拆分为 X 个大
  • WPF/MVVM - 将 ViewModel 保留在应用程序组件中还是分开?

    我有一个使用 MVVM 模式的 WPF 应用程序 我激活虚拟机以执行需要用户输入的操作 因此需要从虚拟机激活视图 我开始将虚拟机分成单独的组件 程序集 部分是因为我将它们视为可单元测试的部分 部分是因为视图应该依赖于虚拟机 而不是相反 但是
  • 如何在 MongoDb 中优先读取辅助节点

    在副本集配置中使用 mongodb 时 1 个仲裁器 1 个主节点 2 个从节点 如何设置对辅助节点执行读取操作并仅将主节点保留为写入的首选项 我正在使用 MongoDb 2 0 4 和 Morphia 我看到有一个slaveOk 方法 但
  • 为什么显示:-ms-flex; -ms-justify-内容:居中;不能在 IE10 下工作吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 为什么下面的代码在IE10中不起作用 foo display ms flex ms justify content center 我需要写
  • 使用设备加密附加表​​列

    我在用着devise https github com plataformatec devise使用 bcrypt 加密器对密码列进行 Rails 身份验证 我有一个用户表 用于存储我想要加密的敏感信息 是否可以使用设备来加密和解密其他用户
  • ide sublime2 如何查找方法定义

    我在用着崇高2用于 Ruby On Rails 编程 我需要能够单击方法名称并跳转到定 义该方法的类 有很多具有类似功能的 IDE Goto symbol is Ctrl R linux this gives a pop up list o
  • ASP.Net MVC 如何使用 Html.RenderAction 将 url 参数传递给 ChildAction

    我以为这会很简单 但我设法用一些方法来解决它 如果我想将 URL 参数传递给另一个操作 我是否必须为此创建一个新路由 控制器 ChildActionOnly public ActionResult ContentSection string
  • 添加/删除字段的 Javascript 函数

    我对 JavaScript 的经验不是很丰富 但这段代码与我正在寻找的代码类似 特别是其中包含 删除字段 链接的地方 这是 JavaScript 函数 Add more fields dynamically function addFiel