代码之家  ›  专栏  ›  技术社区  ›  Bob Herrmann

我可以确定一个复选框在页面加载时的默认状态是什么(或者重置为什么值())。

  •  2
  • Bob Herrmann  · 技术社区  · 17 年前

    当一个HTML页面被加载时,不同的输入元素可以像在HTML中声明的那样被初始化。如果用户更改了一些输入值,然后在表单上执行reset(),则表单将重置为其初始加载状态。

    我的问题是,我能否确定“初始元素状态”是使用JavaScript的(理想情况下是跨浏览器的方式?)

    理想情况下是这样的(在哪里?????我不知道该怎么做。)

    <input type='checkbox' id='chkbox' checked />
    
    <script>
    alert('The initial state was ' ???? );
    $('chkbox').checked = true
    alert('The initial state was ' ???? );
    </script>
    

    这个脚本会说初始状态是“假”两次。

    2 回复  |  直到 17 年前
        1
  •  2
  •   Miles    17 年前

    radio -和 checkbox -类型 input S拥有财产 defaultChecked 由W3C级别1和级别2 HTML DOMS定义。悲哀地, IE only supports it in IE8 我个人不知道IE7和以前的干净解决方案(尽管可能有一个!)。您可能需要执行以下操作:

    // on page load:
    $(':radio,:checkbox').each(function() {
        this.myDefaultChecked = this.checked;
    })
    

    你可能还想试验一下 el.getAttribute('checked') 返回初始值或当前值。

        2
  •  1
  •   Mark Hurd    17 年前

    为什么不把状态保存在document.ready上?伪代码,现在没有时间测试

    $(document).ready(function) ({
        var checked = $('chkbox').attr("checked");
        // any other actions on the checkbox
        alert("The initial state was" + checked);
    });
    

    这样,对复选框执行的任何操作都不会对变量产生影响,因为它是在事件发生之前保存的。