使用预填充表单,仅提交更改的字段

2024-01-28

我有一个使用选择和文本输入的 html 表单。该表单预先填充了默认值。如何仅提交用户更改默认值的输入?请注意,该页面将存储在空间有限的嵌入式系统中,因此不可能使用 javascript 库。

示例 HTML:

<form>
    <input type="text" name="field1" value="value1" />
    <input type="text" name="field2" value="value2" />
    <select name="field3">
        <option value="option1" select>Option 1</option>
        <option value="option2" select>Option 2</option>
    </select>
    <input type="Submit" />
</form>

需要明确的是,提交表单时,用户未更改的输入不应显示在 POST 请求中。


根据 Barmar 建议使用数组来跟踪哪些值已更改,这是我提出的解决方案并且它有效。

这是js:

var tosubmit = []
function add(name) {
    if(tosubmit.indexOf(name) == -1)
        tosubmit.push(name);
}

function is_changed(name) {
    for(var k = 0; k < tosubmit.length; k++)
        if(name == tosubmit[k])
            return name && true;
    return false;
}

function before_submit() {
    var allInputs = document.getElementsByTagName("input");
    var allSelects = document.getElementsByTagName("select");
    for(var k = 0; k < allInputs.length; k++) {
        var name = allInputs[k].name;
        if(!is_changed(name))
            allInputs[k].disabled = true;
    }
    for(var k = 0; k < allSelects.length; k++) {
        var name = allSelects[k].name;
        if(!is_changed(name))
            allSelects[k].disabled = true;
    }
}

html:

<form onSubmit="beforeSubmit()">
    <input type="text" name="field1" value="value1" onchange="add('field1')" />
    <input type="text" name="field2" value="value2" onchange="add('field2')" />
    <select name="field3" onchange="add('field3')">
        <option value="option1" select>Option 1</option>
        <option value="option2" select>Option 2</option>
    </select>
    <input type="Submit" />
</form>

这是有效的,因为禁用的表单元素不包含在 POST 请求中。感谢大家的建议。

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

使用预填充表单,仅提交更改的字段 的相关文章

  • Meteor:应用程序无法在 0.9.1.1 版本上运行

    出现类似错误 Error TypeError undefined is not a function evaluating Template create anonymous function iron dynamic template j
  • 从未用 @flow 标记的导入文件中获取类型定义

    TL DR我怎么告诉flow从未声明的导入模块导入类型定义 flow 加长版 流接缝能够从不使用流语法的文件中派生类型 请参阅示例 示例文件 flow js if Math random lt 0 5 var y hello else va
  • Meteor - 从客户端取消服务器方法

    我正在通过服务器方法执行数据库计数 用户可以选择他们希望如何执行计数 然后调用该方法 我的问题是 计数可能需要一些时间 并且用户可能会在方法运行时改变主意并请求不同的计数 有什么方法可以取消调用的方法并运行新的计数吗 我认为 this un
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • 在 webpack 2.x 中使用 autoprefixer 和 postcss

    如何使用autoprefixer使用 webpack 2 x 以前 它曾经是这样的 module loaders test scss loader style css sass postcss postcss gt return autop
  • 通过 CDN 使用 Dojo 时如何加载自定义 AMD 模块?

    我正在使用 google 的 CDN 并尝试使用他们的加载程序加载我自己的 AMD 模块 我知道我做错了什么 但我被困住了 有任何想法吗
  • 如何使输入字段和提交按钮变灰

    我想变灰这两件事 http doorsplit heroku com 歌曲输入字段和提交按钮 直到用户输入艺术家 有没有一种简单的方法可以通过 JQuery 来做到这一点 艺术家输入字段的id是 request artist 你可以这样做
  • Angular 2+ 安全性;保护服务器上的延迟加载模块

    我有一个 Angular 2 应用程序 用户可以在其中输入个人数据 该数据在应用程序的另一部分进行分析 该部分仅适用于具有特定权限的人员 问题是我们不想让未经授权的人知道how我们正在分析这些数据 因此 如果他们能够在应用程序中查看模板 那
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • 如何使用tampermonkey模拟react应用程序中的点击?

    我正在尝试使用 Tampermonkey 脚本模拟对 React 元素的点击 不幸的是 由于 React 有自己的影子 DOM 所以天真的方法使用document querySelector 不工作 我遇到了一些需要修改 React 组件本
  • 如何阻止破折号自行包裹?

    我有一个标题 标题最后一个单词的末尾是一个破折号 单词和破折号之间没有空格 当浏览器窗口变小时 破折号会中断并换成新行 在自己的行上有一个破折号是不好的排版 如何停止破折号之前的换行 以便最后一个单词运行到新行 这是代码 h1 XYZ co
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 为 illustrator 导出脚本以保存为 web jpg

    任何人都可以帮我为 illustrator CC2017 编写一个脚本 将文件以 JPG 格式导出到网络 旧版 然后保存文件并关闭 我有 700 个文件 每个文件有 2 个画板 单击 文件 gt 导出 gt 另存为 Web 旧版 然后右键文
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • 如何在类似控制台的环境中运行 JavaScript?

    我正在尝试遵循这里的示例 http eloquentjavascript net chapter2 html http eloquentjavascript net chapter2 html and print blah 在浏览器中运行时
  • 为什么我不能在 AngularJS 中使用 data-* 作为指令的属性名称?

    On the t他的笨蛋 http plnkr co edit l3KoY3 p preview您可以注意到属性名称模式的奇怪行为data 在指令中 电话 Test of data named attribute br
  • 有没有办法阻止 prettier / prettier-now 将函数参数分解为新行

    当使用 prettier prettier now 在保存时进行格式化时 当一个函数包装另一个函数时 它会中断到一个新行 我想知道是否有办法阻止这种行为 例如 期望的输出 app get campgrounds id catchAsync
  • 条件在反应本机生产中失败,但在开发中有效

    我创建了一个反应本机应用程序 我需要通过它进行比较 如果属实 就会执行死刑 问题是 该条件适用于 React Native 开发模式 而不适用于 React Native 生产版本 我使用 firebase 作为数据库 也使用 redux
  • 如何更改此 jquery 插件的时区/时间戳?

    我正在使用这个名为 timeago 的插件 在这里找到 timeago yarp com 它工作得很好 只是它在似乎不同的时区运行 我住在美国东部 费城时区 当我将准确的 EST 时间放入 timeago 插件时 比如 2011 05 28
  • 为什么 jquery 没有检测到单选按钮未被选中的情况? [复制]

    这个问题在这里已经有答案了 可能的重复 JQuery radioButton change 在取消选择期间不会触发 https stackoverflow com questions 5176803 jquery radiobutton c

随机推荐

  • 为什么“openssl pkcs12 -in keystore.p12 -out client-certificate.pem -clcerts -nokeys”需要 -nokeys

    我正在使用 openssl 生成客户端证书和密钥 稍后将在与 cUrl 的相互身份验证中使用它们 我正在使用以下命令来生成客户端证书 openssl pkcs12 in keystore p12 out client certificate
  • 像命令式程序一样跟踪 Haskell 中的程序变量

    每次用户与我的程序交互时 我很难找出如何进行更改 很难解释 所以这里有一个例子 Haskell wxhaskell simulate Int gt Frame gt IO simulate qNr window do fdata lt re
  • 将字符串分成两半

    我正在制作一个新的转换软件来隐藏消息 为了好玩 我制作了一个二进制和十进制转换类 我的想法是 用户输入字符串 它将全部转换为二进制格式 然后将其分成两半 将一半转换为十进制 然后再次将字符串加在一起 使其成为二进制和十进制的混合 在其他版本
  • 使用 Xcode 将 Swift 交叉编译到 Linux?

    假设我有一个使用 Swift 和一些 C 语言的 Xcode 项目 该项目使用的所有框架 依赖项在两个平台上都可用 有没有一种简单的方法来告诉 Xcode 生成 framework 或者只是为树莓派构建整个项目 None
  • 通过发送者在 Swift 上获取按钮按下的 ID

    所以我有一个带有 3 个按钮的故事板 我只想为所有这 3 个按钮创建 1 个操作 并根据它们的标签 id 决定要做什么 有没有办法为每个按钮获取某种标识符 顺便说一句 它们是图像 因此没有标题 IBAction func mainButto
  • Python 3.6 quit() 移植到 exe 后不起作用

    我有一个小的 tkinter gui 可以生成一些报告 我在其中内置了一个退出按钮 当我启动脚本时 该按钮工作正常 但我使用 cx freeze 将其转换为 exe 并且除了退出按钮之外 整个程序都在工作 def quits quit 我创
  • 如何用php获取文件的相对路径

    我正在尝试捕获文件的相对路径以创建共享链接 从我的httpdocs网络服务器上的文件夹 我的文件在这里 jack single uploads folder1 image jpg The var dir file给我这个输出 uploads
  • 如何从 BlazeDS 获取强类型集合?

    我已通过 BlazeDS 将 Spring bean 暴露给我的 Flex 应用程序 在我的 Java 代码中 我返回强类型列表 例如 public List
  • 为什么clearTimeout没有清除这个react组件中的超时?

    我试图在启动新的超时之前清除以前的超时 因为我希望消息显示 4 秒并消失 除非在 4 秒结束之前弹出新消息 问题 旧的超时正在清除当前消息 因此在这种情况下 clearTimeout 在此组件中不起作用 let t t for timer
  • 在 Chrome 中,如何使样式选择菜单的宽度达到父容器的 100%?

    我正在创建一个带有文本框和样式选择菜单的表单 本质上是一个 DIV 其中包含其他 DIV 我希望这两个项目具有相同的宽度 最好不是固定的像素宽度 而是 100 的可用空间 我有 div class field div
  • 模型属于任一/或多于一个模型

    是否有可能拥有一个属于 或 或 多个模型的模型 例如 在我的项目中 我有一个订阅模型 可能属于一个人或一个组 当一个人加入某个特定组时 她会自动 继承 该组的订阅 我成立了以下协会 亲自 rb has many subscriptions
  • 悬停时在不同 div 上显示子菜单

    您好 请查看以下 html document ready function sub on mouseenter function event second menu addClass show no sub on mouseenter fu
  • 在 rrapply::rrapply() 中保留空列表

    是否有一个选项允许我保留具有 0 长度列表值的列表条目how melt 选项 在下面 我想保留B and E条目 注意 当我在这里有一个更简单的表示时 akrun 给出了一个初始解决方案 我没有 0 长度列表 E在原来的 我最初接受了 意识
  • 调试设计时包时启动 Delphi 时出错

    我在启动 Delphi 2010 的第二个实例来调试设计时包时遇到问题 在项目选项 调试器下 我使用 C Program Files Embarcadero RAD Studio 7 0 bin bds exe 作为主机应用程序 并具有以下
  • iPhone 设备 3.0 静态库中的类别

    我的静态库中有类别 任何应用程序开发人员都应该将 ObjC 标志设置为 其他链接器标志 才能正确使用我的静态库 它适用于 iPhone 设备 iPhone Simulator 2 x 和 iPhone Simulator 3 0 但在 iP
  • 如何处理 Spring Data JPA 中 ID 数组的批量删除?

    现在我有一个 User 类 我得到一个请求数据array来自jsp or html 列出这个Integer arr 5 6 9 10 62 52 21 然后我使用两种方法来完成批量删除操作 Transactional Override pu
  • UIImageView 缓存策略 - AFNewtorking

    我的应用程序中有几个 UIImageView 我使用 AFNetworkingsetImageWithURL从我的服务器填充图像 文档说这个方法使用标准的 UIImageView 缓存策略 我的问题是 如果我更新服务器上的图像 该图像不会很
  • 使用 R 将列名称插入其值

    我需要将列名称 部门插入其值中 我有这样的代码 Department lt c Store1 Store2 Store3 Store4 Store5 Department2 lt c IT1 IT2 IT3 IT4 IT5 x lt c 1
  • 避免重复输入 mysql 数据库的最佳方法

    我有一个包含 3 列的表 id pk pageId fk 名称 我有一个 php 脚本 它将大约 5000 条记录转储到表中 其中大约一半是重复的 具有相同的 pageId 和名称 pageId 和名称的组合应该是唯一的 当我在 php 中
  • 使用预填充表单,仅提交更改的字段

    我有一个使用选择和文本输入的 html 表单 该表单预先填充了默认值 如何仅提交用户更改默认值的输入 请注意 该页面将存储在空间有限的嵌入式系统中 因此不可能使用 javascript 库 示例 HTML