【发布时间】:2019-05-15 15:53:52
【问题描述】:
我正在使用<input type="text"> 来存储通过 JavaScript 处理的表单值集合。
在 JavaScript 中,值具有这种结构
{"family":"Johnsons","Johnsons":{"girls":["Anna","Bella"],"boys":["Robert"]}}
所以上面的输入在表单提交之前看起来像这样
<input id="main" type="text"
value="{"family":"Johnsons","Johnsons":{"girls":["Anna","Bella"],"boys":["Robert"]}}">
表单保存后,我得到了这个
<input id="main" type="text"
value="{"family":"Johnsons","girls":"Anna","boys":"Robert"}">
输入的值是通过这段代码设置的,我怀疑这一定是问题所在:
// the input
var main = document.getElementById('main');
// the content structure before JSON.stringify
var content = {
family: "Johnsons",
Johnsons: {
girls: [ "Ana", "Bela" ],
boys: [ "Robert" ]
}
};
main.value = JSON.stringify(content).replace( /\"/g, '\"');
main.setAttribute('value', main.value);
console.log(main.value);
<input id="main" type="text">
我需要一个普通的 JavaScript 解决方案,但感谢您的回复。
【问题讨论】:
-
您能提供一个代码的工作示例吗?这意味着包括必要的 HTML 和 JavaScript,以便我们可以更准确地为您提供帮助。
-
使用
setAttribute时不需要转义引号 -
提交前的 HTML 外观不是有效的 HTML。
"in 值必须被转义。 -
只是为了缩小范围,当您在提交时将您的值回显到屏幕上而不是在将其添加回输入后在后期处理中显示时会发生什么?
-
我推动输出回显的原因是我有一种强烈的感觉,这是服务器端而不是客户端。经过所有客户端的测试和建议,他们都正确地提交了值。这表明它一定是服务器端的问题。
标签: javascript json joomla3.0 custom-fields html-escape-characters