2

我有一个显示复选框的 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

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

我怎么解决这个问题?

4

2 回答 2

2

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

var checkBox = $('checkbox_test');
checkBox.checked = !checkBox.checked;
于 2012-07-30T09:44:54.293 回答
1

在我看来,您需要 $('checkbox_test')[0].checked 来测试检查性。

checked 属性是原生 DOM 的东西,不是 jQuery 的一部分。

于 2013-03-04T09:35:49.243 回答