【问题标题】:Selective submission of form elements选择性提交表单元素
【发布时间】:2011-10-09 18:07:12
【问题描述】:

我有一个表单,其中包含隐藏元素,以创建一个逗号分隔值的伪数组,该数组将通过 post 提交给服务器,然后隐藏元素将被解码为数组并处理存储。为了填充隐藏元素,我使用可见元素和 javascript 处理的按钮向隐藏元素添加值,每次按下按钮时清除表单。

问题来了:如何让可见元素不提交给服务器,而只提交隐藏元素以节省带宽?有没有办法创建一个不会与表单的其余部分一起提交的文本输入字段,但 javascript 和普通表单控件仍然可以访问?这里的目标是防止在单击提交按钮时发送不必要的相同数据重复,在 javascript 用我需要的数据填充伪数组之后。

编辑:感谢您的帮助。我得到的前两个答案很好,但我选择了一个我认为更详细且对我自己和其他可能正在寻找相同解决方案的人有帮助的答案。

计划:我将有一个 onsubmit 脚本,在提交之前禁用不需要的字段,这样它们就不会被发送到服务器,从而节省(一点点)带宽并减少我的服务器端的信息量脚本需要做的。这使得可以轻松地使用 javascript 来清除我想要清除的字段,同时不断保持隐藏字段加载我需要的 CSV。

【问题讨论】:

    标签: javascript forms html post submit


    【解决方案1】:

    我现在能想到的概率有两个:

    1. 将可见的输入元素放在form标签之外,只留下提交按钮和隐藏字段。
    2. 在表单元素上创建一个事件onsubmit 以在可见字段上设置disabled 属性。在某些可能需要额外删除该事件的浏览器上,返回 false 并手动触发表单提交。

    【讨论】:

    • 此答案在步骤 2 中描述了一种更具体的做事方式,同时告知我可能遇到的潜在陷阱,从而在实施其余部分之前将我的鼻子指向正确的方向,以便进一步研究我的问题形式。谢谢您的帮助。此外,这里提出的两个想法同样可行,但我更喜欢 2 比 1,因为 2 给了我更多的控制权,而 1 会迫使我手动清除每个可见元素。
    【解决方案2】:

    您可以将元素的“禁用”属性设置为true,以防止它们被提交。

    【讨论】:

    • 我认为这可行。在按下提交按钮之前保持它们处于启用状态,并且在提交数据之前,只需将所有可见字段设置为“禁用”。可能需要我一段时间来验证这是否是我想要做的。
    • 嗯,它绝对有效,因为它们不会作为表单的一部分发布。如果您在发布之前禁用它们,但之后立即重新启用它们,则应该不会有任何可见的效果。
    猜你喜欢
    • 1970-01-01
    • 2013-06-11
    • 2018-06-08
    • 2018-10-26
    • 1970-01-01
    • 2015-09-09
    • 2010-10-08
    • 2012-03-15
    • 2017-01-30
    相关资源
    最近更新 更多