The following example code works in FireFox but IE is causing problems.
This code essentially renders a list of dynamic checkboxes according to a JSON array.
When I try and submit the variblse the value for the checkboxes are stored as "on". I've noticed there is an additional attribute that gets rendered (IE only) called jQuery1288631121994 which stores the real value. It seems like jquery is trying to manage the state of checkboxes but I cant seem to access the stored values?
Here is my test example:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="js/jquery-1.4.3.min.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
var state = {
Professions: [1]
};
$(document).ready(function () {
var data = [{ "ID": 1, "Name": "Football" }, { "ID": 2, "Name": "Cricket" }, { "ID": 3, "Name": "Hockey"}];
$.each(data, function () {
var catid = this['ID'];
var catname = this['Name'];
var selected = $.inArray(catid, state.Professions) != -1 ? true : false;
$("<li></li>")
.append(
$("<input></input>").attr({
id: 'category' + catid
, name: 'categories'
, value: catid
, type: 'checkbox'
, checked: selected
})
.click(function (event) {
//alert($(this)[0].value);
})
)
.append(
$(document.createElement('label')).attr({
'for': 'category-' + catid
})
.text(catname)
)
.append(
$("<div></div>").addClass("clear")
)
.appendTo("#ProfSelector ul");
});
$("#btnTest").click(function () {
alert($("#ProfSelector input:checkbox:checked").val());
});
});
</script>
</head>
<body>
<div id="ProfSelector">
<ul>
</ul>
</div>
<a href="#" id="btnTest">Test</a>
</body>
</html>