对复选框的checked属性的修改无法正常工作

时间:2012-07-30 09:43:52

标签: javascript ruby-on-rails prototypejs rjs

我有一个显示复选框的rails视图。当我点击复选框时,我的控制器会调用一个rjs函数,它会根据之前的状态检查或取消选中复选框。

在视图中:

<%= check_box_tag 'checkbox_test' %>

<%= observe_field 'checkbox_test',
  :url => { :action => :test_checkbox }
%>

在控制器中:

def test_checkbox
  render :update do |page|
    page << "
      var checkBox = $('checkbox_test');
      checkBox.checked = !checkBox.checked;
    "
  end
end

我第一次点击复选框时,一切正常,调用该函数并更改checked属性。问题出现在:如果我再次单击复选框,属性不会更改(但在视觉上复选框会更改...),因此不会调用函数“test_checkbox”。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

根本不要使用该属性。只需使用checked属性即可。对于几乎每个属性和情况,这都是很好的建议。

var checkBox = $('checkbox_test');
checkBox.checked = !checkBox.checked;

答案 1 :(得分:1)

对我来说,你需要$('checkbox_test')[0] .checked来测试检查。

checked属性是本机DOM的东西,不是jQuery的一部分。