serializeArray()不适用于动态加载的隐藏字段

时间:2017-09-08 15:08:08

标签: javascript jquery html serialization hidden-field

我有以下代码将表单的所有字段值转换为单个对象。但是,它不会转换动态加载的隐藏字段(但如果它们的值是硬编码的,它会转换它们)。

根据我的研究,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"); 

1 个答案:

答案 0 :(得分:0)

我刚从这里读到的一项训练:  (https://stackoverflow.com/a/25402639/4996722

$("input[id=field1]").val("400");会正确地将值放在那里。但是,这可能是一个JQuery错误,因为没有充分的理由说明为什么$("#field1").val("400")不起作用,因为它们是同一个东西。