无法通过 JS 更新隐藏字段

Posted

技术标签:

【中文标题】无法通过 JS 更新隐藏字段【英文标题】:Can't update hidden field through JS 【发布时间】:2015-12-16 06:20:35 【问题描述】:

我正在处理以下让我感到沮丧的编码问题,因为我认为它应该是直截了当的。代码如下:

<input type="hidden" id="color" value="red"/>

document.getElementById("color").value="blue"

我有一个辅助 javascript 文件,它在选择新字段时侦听 onselect 事件。

然后它会读取color 元素的值,例如document.getElementById("color").value,并对其进行处理。

如果我基本上通过 html 对隐藏字段颜色的值进行硬编码,则辅助 javascript 能够读取 color 元素的值,但是当我通过上面的 JS 设置它时就不行了。

应该是直截了当的,但由于某种原因,它没有像看起来那样设置值。

任何意见将不胜感激。

谢谢, 鲍勃

【问题讨论】:

您能否在答案中提供 HTML 代码? 我试过把它去掉,它在我的原始消息中,但只有这个: 在 java 脚本标签之前 可能是一个 jsfiddle 以及您想要实现的目标? 好的,我是这个 jsfiddle 的新手,但这里是:jsfiddle.net/7tacLpw1 它没有在那里运行,但我不完全知道你需要如何输入。但希望你能明白。 见这里:jsfiddle.net/7tacLpw1/2 【参考方案1】:

似乎工作正常,你能检查控制台是否有错误吗?

document.getElementById("color").value = "blue";
var theColor = document.getElementById("color").value;
document.write("Hidden color is: <strong style='color:" + theColor + "'>" + theColor + "</strong>");
&lt;input type="hidden" id="color" value="red" /&gt;

【讨论】:

是的,这似乎可行,但正如我在之前的回复中所传达的,我只是将脚本简化了,它不是包含 jsp、js 和 html 的页面的完整代码。所以我需要知道在任何 java 脚本段中调用的 document.getElement(ById) 是否实际上可以访问 html 元素。那么是否存在 java 脚本(由于位置或其他原因)无法访问 dom 元素或任何类似情况的情况?【参考方案2】:

哦,该死,在 document.getElementById("color").value = "blue" 之后缺少一个分号,这似乎是罪魁祸首。

没想到JS对这个这么敏感。

难以置信,这么多年过去了,我还能在错过的分号上浪费多少时间 :)。

感谢大家的意见。 鲍勃

【讨论】:

【参考方案3】:

这是个老问题 但我想如果有人还在寻找答案,那就是这里

你可以试试$('input[name="NameOfField"]').val('value'); 这肯定会奏效。

当我们在提交表单时尝试更改隐藏字段的值时,它并没有更新值,因为 DOM 已经从输入参数中分离了 ID,但名称仍然存在,因为名称将在表单中传递。

如果有人觉得这很有用,并且他们不必为一个简单的解决方案工作很多小时:)

【讨论】:

以上是关于无法通过 JS 更新隐藏字段的主要内容,如果未能解决你的问题,请参考以下文章

隐藏字段上的 Dojo Onchange 事件

jQuery 更新隐藏的输入值,但不传递给 POST 变量

防止清除按钮擦除隐藏字段

jQuery - 检测隐藏输入字段的值更改

使用选择框的索引值更新隐藏文本框的 onchange 事件语法

jQuery 更改为隐藏字段后,在 Gravity Forms 中触发表单更新