我有以下代码将表单的所有字段值转换为单个对象。但是,它不会转换动态加载的隐藏字段(但如果它们的值是硬编码的,它会转换它们)。
根据我的研究,serializeArray()应该覆盖隐藏的字段,只要它们有名称。我的确有名字。所以我无法弄清楚这里有什么问题。
serializeArray():
var data = {};
$("#form1").serializeArray().forEach(function(x){
data[x.name] = x.value;
});
console.log(data);
使用JQuery动态加载隐藏字段值
$("#field1").val("400"); //400 is just an example here
形式:
<form id="form1">
<!-- Not serialized -->
<input type="hidden" name="field-value.hidden.1" id="field1" value=""/>
<div class="container">
<div class="row">
<div class="col-sm-12">
<!-- Works fine -->
<textarea id="field2" name="field-value.show.1" rows="3" cols="10"></textarea>
</div>
</div>
</div>
</form>
问题摘要:
如果输入如下所示serializeArray:
<input type="hidden" name="field-value.hidden.1" id="field1" value="400"/>
但不是如果:
<input type="hidden" name="field-value.hidden.1" id="field1" value=""/>
$("#field1").val("400");
答案 0 :(得分:0)
我刚从这里读到的一项训练: (https://stackoverflow.com/a/25402639/4996722)
$("input[id=field1]").val("400");
会正确地将值放在那里。但是,这可能是一个JQuery错误,因为没有充分的理由说明为什么$("#field1").val("400")
不起作用,因为它们是同一个东西。