{"Name":"Chris"}
Could be set up to be bound to an HTML element like this:
<input type="text" class="Name"></input>
Simply by using a CSS class name that matches the JSON field name, the data gets bound. This code works for any form input type, and non form elements (label, span, div). I have also provided a function to clear a form. Below is a fully functioning example that you save as html and play with.
<html>
<head>
<script src="https://www.google.com/jsapi"></script>
<script>
google.load('jquery', '1.4.4');
</script>
<script type="text/javascript">
function BindJsonToDialog(fielddata, formId, cssClassPrefix) {
var context = document.getElementById(formId);
var selectorPrefix = " ." + cssClassPrefix;
for (key in fielddata) {
var ctl = $(selectorPrefix + key, context);
if (ctl.length != 0) {
var isTextField = (ctl[0].tagName == "DIV" || ctl[0].tagName == "SPAN" || ctl[0].tagName == "LABEL");
if (isTextField)
ctl.text(fielddata[key]);
if (ctl[0].type == 'checkbox')
ctl.attr('checked', (fielddata[key] == true));
else
ctl.val(fielddata[key]);
}
}
}
function ClearDataFields(formId, clearClass) {
$("#" + formId + " :input").each(function(){
var type = this.type;
var tag= this.tagName.toLowerCase();
if (type == 'text' || type == 'password' || tag == 'textarea' || type == 'hidden')
this.value = "";
else if (type == 'checkbox' || type == 'radio')
this.checked = false;
else if (tag == 'select')
this.selectedIndex = 0;
})
//clearClass needed to clear non-input elements
$("." + clearClass).text("");
}
//Sample data
var jsonString = "{'Name':'Chris Clark','City':'Charleston','Check1':true,'Check2':false,'Email':'chris at untrod dot com'}"
var jsonData = eval("(" + jsonString + ")");
</script>
</head>
<body>
<div id="myForm">
<div>Name: <span class="dfName clearMe"></span></div>
<div>Email: <input type="text" class="dfEmail"></input></div>
<div>Checked: <input type="checkbox" class="dfCheck1"></input></div>
<div>Unchecked: <input type="checkbox" class="dfCheck2"></input></div>
<div>City: <input type="text" class="dfCity"></input></div>
</div>
<div style="padding-top:10px; cursor:pointer;" onClick="BindJsonToDialog(jsonData, 'myForm', 'df');">
Click here to fill form
</div>
<div style="padding-top:10px; cursor:pointer;" onClick="ClearDataFields('myForm', 'clearMe');">
Click here to clear form
</div>
</body>
</html>
