以编程方式更改复选框的复选项
Programmatically change checked of a checkbox
我有以下两个复选框:
<input type="checkbox" id="id3"></input>
<input type="checkbox" id="id4"></input>
期望的行为是当我点击id3时,id4应该采用。
在第一次和第二次点击时可以正常工作,但之后就不是了。知道为什么吗?
这里是我的脚本:
<script>
function test2()
{
var checked = this.checked;
if(checked)
$("#id4").attr("checked", "checked");
else
$("#id4").removeAttr("checked");
}
$("#id3").click(test2);
</script>
(或工作dojo在这里http://dojo.telerik.com/eviTi)
请使用prop而不是attr,并且建议在复选框上使用更改事件而不是单击事件。
attr做DOM操作,而prop只是改变DOM的内部属性
<script>
function test2()
{
var checked = this.checked;
if(checked)
{
$("#id4").prop("checked", "checked");
}
else
$("#id4").prop("checked", false);
}
$("#id3").change(test2);
</script>
使用change
事件(不是click
)并使用 .prop
方法代替.attr
原因:
当属性和同名属性同时存在时,通常更新一个属性会更新另一个属性,但对于某些输入属性,例如value
和checked
,情况并非如此:对于这些属性,属性总是表示当前状态,而属性(除了旧版本的IE)对应于输入的默认值/检查性。 ( Ref )
function test2() {
$("#id4").prop("checked", this.checked);
}
$("#id3").change(test2);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<input type="checkbox" id="id3">
<input type="checkbox" id="id4">
使用 .prop () 而不是.attr()
就像这样
function test2()
{
var checked = this.checked;
if(checked)
$("#id4").prop("checked", "checked");
else
$("#id4").removeAttr("checked");
}
$(document).ready(function(){
$("#id3").click(test2);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" id="id3"></input>
<input type="checkbox" id="id4"></input>
用.prop()
代替.attr()
function test2()
{
var checked = this.checked;
if(checked)
{
$("#id4").prop("checked", "checked");
}
else
$("#id4").removeAttr("checked");
}
我改变了你的代码,但问题是attr()
。使用prop()
代替
$("body").on("change","#id3",function(){
if($(this).is(":checked")){
$("#id4").prop("checked","checked");
} else{
$("#id4").removeProp("checked");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" id="id3"></input>
<input type="checkbox" id="id4"></input>
你可以直接使用
function test2()
{
var checkBox = $("#id4");
checkBox.prop("checked", !checkBox.prop("checked"));
}
$("#id3").click(test2);
相关文章:
- 复选框/单选按钮-添加所选项目的总价
- 根据选定的下拉选项更改可用复选框
- 如何通过单击唯一按钮保存下拉菜单/复选框菜单选项和占位符值
- 根据复选框更改选择选项的值
- 如何使用复选框启用选项并通过本地存储进行保存
- 根据使用angularjs从下拉菜单中选择的选项选择适当的复选框
- 防止具有相同选项的两个复选框上的重复选项
- 如何使用复选框显示表单的更多选项并更改表单的操作属性
- 复选框选中全部选项
- 使用 jquery 和 php 动态禁用某些复选框选项
- 带有选项框架和WordPress的JQuery复选框
- 带有复选框的多个测验 - 多个选项
- 选中复选框,则在新选项卡中打开链接 否则在同一页面上打开它
- 如何获取复选框值而不是所选选项
- IE9 问题:动态创建(通过 innerHTML)选项按钮和复选框不起作用
- 不能发送超过 12 个单选按钮和表单操作邮件中的复选框选项
- 输入到选项卡脚本不会传递复选框
- 如何只检查活动选项卡's复选框?它也在检查其他人
- 如何将复选框值和选项值相加,并在文本区域中输入总和
- JavaScript验证复选框,当从选项列表中选择多个复选框时