表格复选框/收音机需要更改课程

时间:2011-06-20 14:46:48

标签: jquery attributes checkbox radio-button

我正在做一个用户有一个选项列表的表单。一些单选按钮,一些复选框。用户可能是愚蠢的,并会改变他们的想法。我需要更改输入中的选中值以及类,因此我可以通过表单提交来定位这些值。这需要在用户单击“提交”之前发生。这是我到目前为止所改变的“已检查”属性和类,但是一旦不再选择按钮,它们就不会改变。救命啊!

$("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");
       }
   });

3 个答案:

答案 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方法。