2012-07-30 3 views
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"함수가 호출되지 않습니다.

이 문제를 어떻게 해결할 수 있습니까?

+1

대신 작업 코드가 필요하다는 질문을 편집 한 것 같습니다. 뭐라 구요? – Esailija

+0

여전히 작동하지 않습니다. 난 그냥 코드에서 복사 오류를 제거합니다. – Jerem

답변

2

속성을 전혀 사용하지 마십시오. checked 속성 만 사용하면됩니다. 이것은 거의 모든 속성과 상황에 대한 좋은 조언입니다.

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

예 감사합니다. Tim, 코드를 복사하여 실수했습니다. – Jerem

1

체크 표시 여부를 테스트하려면 $ ('checkbox_test') [0]가 필요합니다.

checked 속성은 jQuery의 일부가 아닌 기본 DOM 항목입니다.

+0

'$ ('checkbox_test') [0] .checked'로 시도했으며'$ ('checkbox_test')를 사용하는 것과 같은 동작을합니다. ' – Jerem