2010-03-20 6 views
2

나는이 게시물 How can I unobtrusively disable submit buttons with Javascript and Prototype?을 따르려고 노력하고 있지만 제대로 작동하지 않습니다. 이 양식은 RJS 함수를 트리거하므로 헬퍼의 onclick 이벤트를 그대로 유지해야합니다. RJS는 동일한 양식을 두 개의 새 텍스트와 함께 반환하거나 다시로드합니다. 나는 정말로 혼란 스럽다. 여기에 양식에 대한 내 레일 코드 :Prototype 헬퍼 및 RJS와 함께 Rails 제출 버튼을 비활성화하는 방법은 무엇입니까?

.span-20#comparison 
/new comparison . . . 
/voting forms (also reloaded) 
    .span-4.prepend-3.append-6 
    - form_remote_tag :action => url_for(:controller => :comparisons), :method => :post do 
     = hidden_field_tag :poem1_id, poems[:a].id 
     = hidden_field_tag :poem2_id, poems[:b].id 
     = hidden_field_tag :response, 1 
     = submit_tag "Vote for me", :disabled => false, :disable_with => 'Vote for me', :class => "compare"  

    .span-4.append-3.last 
    - form_remote_tag :action => url_for(:controller => :comparisons), :method => :post do 
     = hidden_field_tag :poem1_id, poems[:a].id 
     = hidden_field_tag :poem2_id, poems[:b].id 
     = hidden_field_tag :response, 2 
     = submit_tag "Vote for me", :disable_with => 'Vote for me', :class => "compare" 

    .span-4.prepend-8.append-8.prepend-top.last 
    - form_remote_tag :action => url_for(:controller => :comparisons), :method => :post do 
     = hidden_field_tag :poem1_id, poems[:a].id 
     = hidden_field_tag :poem2_id, poems[:b].id 
     = hidden_field_tag :response, 'draw' 
     = submit_tag "Declare Draw", :disable_with => 'Declare Draw', :class => "compare" 

RJS는

page.replace_html :comparison, :partial => 'poems', :object => @poems 
page.insert_html :top, :previous, :partial => 'comparison', :object => @comparison 
page << "Effect.ScrollTo($('top'));" 

답변

0

다음은 프로토 타입 사용하여 할 수있는 하나 개의 방법이 모든 input에 onclick 이벤트 핸들러를 추가

<script type="text/javascript"> 
    document.observe("dom:loaded" function() { 
    $$("input .compare").each(function(submit) { 
     submit.observe("click", function() { 
     submit = true; 
     }); 
    }); 
    }); 
</script> 

은 DOM을로드 할 때 compare CSS 클래스 (예 : 제출 버튼)가있는 onclick 이벤트 핸들러는 클릭 할 때 각 버튼을 비활성화합니다. Prototype을 사용하여 이벤트 처리기를 추가하면 요소의 기존 이벤트 처리기가 대체되지 않습니다.

+0

추가 클릭을 차단하는 방법은 무엇입니까? – Jesse

+0

죄송합니다. 귀하가 무엇을하려했는지는 분명하지 않았습니다. –

관련 문제