2017-09-08 70 views
0

我有以下代碼將窗體的所有字段值轉換爲單個對象。但是,它不會轉換隱藏的動態加載的字段(但如果它們的值是硬編碼的,它會將它們轉換)。serializeArray()不適用於動態加載的隱藏字段

根據我的研究,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 

形式:

serializeArra:

<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> 

問題彙總Ÿ工作,如果輸入的樣子:

<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

一個鍛鍊,我只是從閱讀這裏發現: (https://stackoverflow.com/a/25402639/4996722

$("input[id=field1]").val("400");會正確地把價值在那裏。然而,這可能是一個JQuery錯誤,因爲$("#field1").val("400")不起作用的原因沒有充分理由,因爲它們是相同的東西。