2

チェックボックスを表示するレールビューがあります。チェックボックスをクリックすると、コントローラーで 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」は呼び出されません。

どうすればこの問題を解決できますか?

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 に答える