我正在做一个用户有一个选项列表的表单。一些单选按钮,一些复选框。用户可能是愚蠢的,并会改变他们的想法。我需要更改输入中的选中值以及类,因此我可以通过表单提交来定位这些值。这需要在用户单击“提交”之前发生。这是我到目前为止所改变的“已检查”属性和类,但是一旦不再选择按钮,它们就不会改变。救命啊!
$("input:checkbox, input:radio").change(function() {
if ($("input:checked")) {
$(this).attr("checked",true);
$(this).addClass("checked");
} else {
$(this).attr("checked",false);
$(this).removeClass("checked");
}
});
更新:仍然没有。我已经把它减少到了下面的内容,它仍然没有在改变时删除课程。
$("input:checkbox, input:radio").change(function ()
{
if (this.checked)
{
$(this).addClass("checked");
}
else
{
$(this).removeClass("checked");
}
});
答案 0 :(得分:0)
使用prop()
:
$(this).prop("checked",true);
和
$(this).prop("checked",false);
请参阅此问题:.prop() vs .attr()以获取参考原因
同样更改您的代码,因为在您的版本中,如果页面上有任何复选框,则语句的第1部分始终为true:
$("input:checkbox, input:radio").change(function ()
{
if (this.checked)
{
$(this).prop("checked", true);
//also since it is a change event you probably
//don't need these prop() lines
$(this).addClass("checked");
}
else
{
$(this).prop("checked", false);
$(this).removeClass("checked");
}
});
<强>更新强>:
通过您的更新,它似乎对我有用:http://jsfiddle.net/maniator/r7Yf6/
答案 1 :(得分:0)
你可以尝试:
if ($(this).is(":checked")) { $(this).attr("checked",true); $(this).addClass("checked"); } else { $(this).removeAttr("checked"); $(this).removeClass("checked"); }
答案 2 :(得分:0)
您是否尝试过使用if($(this).attr('checked'))
代替if ($("input:checked"))
?
attr
方法是根据您使用的参数的getter或setter方法。