jquery - IE8 中 jQuery 生成的复选框的值存储为 "on"而不是实际值?

标签 jquery internet-explorer-8 checkboxlist

以下示例代码在 FireFox 中可以运行,但 IE 会导致问题。

此代码本质上根据 JSON 数组呈现动态复选框列表。

当我尝试提交变量时,复选框的值存储为“on”。我注意到有一个额外的属性被渲染(仅限 IE),称为 jQuery1288631121994,它存储实际值。看起来 jquery 正在尝试管理复选框的状态,但我似乎无法访问存储的值?

这是我的测试示例:

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

最佳答案

IE 似乎不喜欢复选框属性的设置方式;如果改成下面的IE就开心了:http://jsfiddle.net/tS3cs/

$("<li></li>")
.append(
    '<input id="category'+catid+'" value="'+catid+'" type="checkbox"></input>'
)
.append(
    $(document.createElement('label')).attr({
        'for': 'category-' + catid
    })
    .text(catname)
)
.append(
    $("<div></div>").addClass("clear")
)
.appendTo("#ProfSelector ul");

$('#category'+catid).attr('checked',selected);

关于jquery - IE8 中 jQuery 生成的复选框的值存储为 "on"而不是实际值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4071289/

相关文章:

中继器中的 ASP.NET RadioButtonList?

asp.net - 在 VB.NET 中获取 CheckBoxList 的所有选中值

javascript - JQuery 单选按钮在 IE6 中未被选中

jquery - Facebook 中的通知

javascript - Jquery html() 错误?

java - GWTCanvas 在 IE8 中不工作

c# - 检查是否至少选择了一个复选框列表

javascript - 同一页面中的 2 个不同的 jQuery

jquery - 替换鼠标悬停时的图像,同时将其向左移动

html - 使用 CSS + 居中,IE8 显示彼此相邻的内联 div