2012-07-30 87 views
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」不會被調用。

我該如何解決這個問題?

+1

它看起來像你編輯你的問題有工作代碼呢?是什麼賦予了? – Esailija 2012-07-30 09:48:32

+0

它仍然不起作用。我只是刪除代碼中的複製錯誤。 – Jerem 2012-07-30 09:59:12

回答

2

根本不要使用該屬性。只需使用checked屬性。對於幾乎所有的屬性和情況,這都是很好的建議。

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

是的,謝謝蒂姆,我通過複製代碼 – Jerem 2012-07-30 09:50:02

1

對我來說,你需要$('checkbox_test')[0] .checked來測試檢查。

checked屬性是本地DOM的東西,不屬於jQuery。

+0

犯了一個錯誤我嘗試了'$('checkbox_test')[0] .checked',並且行爲與我使用$('checkbox_test')相同。 ' – Jerem 2013-03-05 13:34:16