jQuery UI对话框,Checkboxes和IE6的神秘案例

时间:2010-10-07 04:17:35

标签: javascript jquery jquery-ui

我有一个包含一些复选框的jQuery UI对话框。我想有条件地设置这些复选框的状态,然后打开对话框。

不幸的是,这会导致IE6出现问题。如果在打开对话框之前设置了值,则永远不会选中该复选框。

例如,在下面的代码中,“对话框复选框1”从不在IE6中检查,而是在所有其他浏览器中。

[更新]问题在于IE6如何重置附加在任何地方的任何复选框的状态。打开Dialog时,jQuery UI会将其附加到正文的顶部。显然“这是一个众所周知的事实,当使用IE时,检查状态 复选框在[任何地方]附加后会丢失其状态“(请参阅下面的链接)

This jQuery forum post提出了一些解决方案,但关注的是更改jQuery UI代码;如果可能的话我不想做的事情。

这有什么解决方案吗?

谢谢,

d

代码:

<script type="text/javascript">
$(document).ready(function() {
    $('#dialog').dialog({
        autoOpen : false,
        modal : true
    });

    $("a#openDialog").click(function() {
        $("#formContainer .check1").attr("checked", true);
        $('#dialog').dialog('open');
        $("#formContainer .check2").attr("checked", true);
    });
});
</script>

<h1>jQuery Dialog/Checkbox Test</h1>
<a href="#" id="openDialog">Open Dialog</a>
<div id="dialog">
    <form>
        <div id="formContainer">
            Dialog Checkbox 1: <input type="checkbox" value="blue" class="check1"/>
            Dialog Checkbox 2: <input type="checkbox" value="red" class="check2"/>
        </div>
    </form>
</div>

2 个答案:

答案 0 :(得分:2)

总是厌恶回答我自己的问题,但我找到了一个解决方法,如果他们碰到这个问题,别人会觉得有用。

在打开对话框之前设置时,使用“ defaultChecked ”属性而不是“已选中”。例如:

$("a#openDialog").click(function() {
    $("#formContainer .check1").attr("defaultChecked", true);
    $('#dialog').dialog('open');
    $("#formContainer .check2").attr("checked", true);
});

请注意,打开后的“defaultChecked”不会检查它。如果代码可能移动,可能更安全,只需使用两者。

答案 1 :(得分:0)

给复选框添加不同的id,并尝试使用id调用chek函数。

如果复选框1具有id = check1

$(“#check1”)。attr(“checked”,true);

试一试