我可以确定复选框在页面加载时的默认状态(或重置()将其重置为的值。)

时间:2009-06-17 20:15:59

标签: javascript html dom

当加载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 个答案:

答案 0 :(得分:2)

radio - 和checkbox - 类型input具有由W3C 1级和2级HTML DOM定义的属性defaultChecked。可悲的是,IE only supports it in IE8;我个人不知道IE7之前的干净解决方案(尽管可能有一个!)。您可能需要执行以下操作:

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

您可能还想尝试el.getAttribute('checked')是否返回初始值或当前值。

答案 1 :(得分:1)

为什么不直接在document.ready上保存状态?伪代码,暂时没有时间进行测试

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

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