2013-01-18 30 views
2

我想知道是否有一種簡單的方法來填充表單,如果你有該表單序列化已經?例如,如果我有var form = $('#myform').serialize(),我應該如何將這些數據加載到表單中?有沒有jQuery的功能可用,或者我應該手動設置表單中的所有值?加載jQuery的序列化數據到表單

實例形式:

<form id="myform"> 
    <input type="text" name="first_name"/> 
    <input type="text" name="last_name"/> 
    <select name="gender"> 
     <option val=""></option> 
     <option val="male">Male</option> 
     <option val="female">Female</option> 
    </select> 
</form> 

所以我在尋找一個快速&簡單的方法來重新填充相同的空白表格與序列化的數據。

+0

實例,請嗎? – Blazemonger

回答

3

儘管@ Johan的回答非常好,但迄今爲止我最好的解決方案是formParams。我將表單轉換爲一個帶有$('#myform').serializeArray()的json對象,然後通過ajax將其發佈到腳本中,並將其保存到數據庫中。當我不得不重新填充表單時,我只是使用ajax請求來獲取json存儲的表單數據,並將其與$('#myForm').formParams()一起使用。

我不知道爲什麼jQuery沒有在框架中實現這樣的功能...

1

使用下面的snippet,但將其更改爲使用id/class而不是每個元素的name屬性。

$.fn.serializeObject = function() 
{ 
    var o = {}; 
    var a = this.serializeArray(); 
    $.each(a, function() { 
     if (o[this.name]) { 
      if (!o[this.name].push) { 
       o[this.name] = [o[this.name]]; 
      } 
      o[this.name].push(this.value || ''); 
     } else { 
     o[this.name] = this.value || ''; 
     } 
    }); 
    return o; 
}; 

當您在關鍵值對中創建表單數據時,只需遍歷對象數組並映射值。一些僞代碼:

$.each(arr, function(k, v){ 
    $('#newform .' + key).val(v); 
});