当加载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>
这个脚本会说初始状态是'假'两次。
答案 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);
});
这样,对复选框执行的任何操作都不会对事件之前保存的变量产生影响。