代码之家  ›  专栏  ›  技术社区  ›  Damo

jQueryUI对话框、复选框和IE6的神秘案例

  •  3
  • Damo  · 技术社区  · 14 年前

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

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

    例如,在下面的代码中,“dialog checkbox 1”从未在IE6中被选中,而是在其他浏览器中被选中。

    [ 更新 ]问题在于IE6如何重置任何附加在任何位置的复选框的状态。当对话框打开时,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 回复  |  直到 14 年前
        1
  •  2
  •   Damo    14 年前

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

        2
  •  0
  •   zod    14 年前