2014-05-05 31 views
1

我有一個動態表單,當文本字段在需要更新時會更改爲輸入框。已更新的文本字段爲JSON字符串 - Javascript/JQuery

當它們已被更新並且用戶單擊提交時,我想將更新的值添加到json字符串,我可以發佈到ASP.NET腳本。

這裏是2個表中的行的HTML:

<tr id="1"> 
<td onclick="">Colleague 1:</td> 
<td id="c1nametxt" onclick=""> 
    <input id="c1nametb" type="text" value="Bob"> 
</td> 
<td id="c1unametxt" onclick=""> 
    <input id="c1unametb" type="text" value="bjones"> 
</td> 
<td id="c1eaddtxt" onclick=""> 
    <input id="c1eaddtb" type="text" value="[email protected]"> 
</td> 
<td id="c1pnotxt" onclick=""> 
    <input id="c1pnotb" type="text" value="0111122224"> 
</td> 
<td id="c1exttxt" onclick=""> 
    <input id="c1exttb" type="text" value="22224"> 
    <span onclick="delrec(this)">Del</span> 
</td> 

<tr id="2"> 
    <td onclick="">Colleague 2:</td> 
<td id="c2nametxt" onclick=""> 
    <input id="c2nametb" type="text" value="John"> 
</td> 
<td id="c2unametxt" onclick=""> 
    <input id="c2unametb" type="text" value="jhill"> 
</td> 
<td id="c2eaddtxt" onclick=""> 
    <input id="c2eaddtb" type="text" value="[email protected]"> 
</td> 
<td id="c2pnotxt" onclick=""> 
    <input id="c2pnotb" type="text" value="0111122225"> 
</td> 
<td id="c2exttxt" onclick=""> 
    <input id="c2exttb" type="text" value="22225"> 
    <span onclick="delrec(this)">Del</span> 
</td> 

這裏是我使用,以檢測輸入框已經更新了jQuery:

$("#subdetails").click(function() { 
    $("#mantab input[type=text]").each(function() { 
     if ($(this).val() !== this.defaultValue) {    

      //code to create json string 

     } 
    }); 
}); 

這是一個JSON字符串的一個例子,我想創建,如果以下領域進行了更新:

{ 
"1":{ 
    "c1nametb": "newname", 
    "c1exttb": "22227", 
    } 
"2":{ 
    "c2eaddtb": "[email protected]", 
    "c2pnotb": "0111122210", 
    } 
} 

任何一個可以請幫助我的代碼來創建這個字符串,或做一個更好的辦法勸這個?

感謝 瑞安

+0

我只想將更新的字段轉換爲字符串而不是整個表單。 – rbradshaw

+0

維護爲每個字段存儲布爾值的數組(或對象),並在更新字段時將值翻轉爲true。 – jahroy

+0

檢出[this](http://stackoverflow.com/questions/194101/what-is-the-best-way-to-track-changes-in-a-form-via-javascript)... – jahroy

回答

0

這裏是解決方案,遍歷每一行,發現文本框的值,並將它推到陣列,最後將其轉換爲字符串。您可以在隱藏字段中設置該字符串以將其傳遞給服務器端。

var ArrColleague = []; 

$("#subdetails").click(function() { 
    $("#mantab tr").each(function (index, val) { 
     ArrColleague.push({ 
      "c1nametb": $(val).find("#c" + $(val).attr("id") + "nametb").val(), 
      "c1unametb": $(val).find("#c" + $(val).attr("id") + "unametb").val(), 
      "c1eaddtb": $(val).find("#c" + $(val).attr("id") + "eaddtb").val(), 
      "c1pnotb": $(val).find("#c" + $(val).attr("id") + "pnotb").val(), 
      "c1exttb": $(val).find("#c" + $(val).attr("id") + "exttb").val() 
     }); 
    }); 
}); 

var JsonString = JSON.stringify(ArrColleague);