2008-09-14 7 views
3

양식을 여러 번 제출하고 다중 선택 필드에서 선택한 항목을 반복하여 각각 한 번 제출하여 onClick 이벤트를 작성하고 싶습니다.어떻게하면 onClick 이벤트에 루프를 만들 수 있습니까?

루프를 어떻게 코딩합니까?

Ruby on Rails에서 작업 중이며 remote_function()을 사용하여 ajax 호출 용 JavaScript를 생성하고 있습니다.

답변

4

빠른 응답 (아직 코딩하지 않았으므로)은 XMLHTTPRequest와 단일 호출에 대한 특정 매개 변수를 사용하여 POST를 만드는 또 다른 함수를 만드는 것입니다. 그런 다음 선택한 항목을 반복하면서 onClick() 핸들러를 호출합니다.

나는 단지 HTML 페이지와 자바 스크립트를 사용하여 개념 증명을 한 다음 RoR에서 작동시키는 법을 알아 내려고합니다.

또한 왜 RoR 컨트롤러에서 루핑 조건을 처리하는 것과 달리 브라우저에서 여러 번 호출하려고합니까?

2

일부 자바 스크립트를 수동으로 작성해야합니다. Rails의 생성자는이 복잡한 작업을 수행하지 않습니다.

Prototype.js는 거의 모든 어려운 작업을 수행합니다. 내 머리 위로 떨어져, 코드는 다음과 같을 것이다 : (안된를)

<%= javascript_include_tag 'prototype' %> 

<form id="my-form"> 
    <input type="text" name="username" /> 

    <select multiple="true" id="select-box"> 
    <option value="1">First</option> 
    <option value="2">Second</option> 
    <option value="3">Third</option> 
    <option value="4">Fourth</option> 
    </select> 
</form> 

<script type="text/javascript" language="javascript"> 
submitFormMultipleTimes = function() { 
    $F('select-box').each(function(selectedItemValue){ 
    new Ajax.Request('/somewhere?val='+selectedItemValue, 
     {method: 'POST', postBody: Form.serialize('my-form')}); 
    }); 
} 
</script> 

<a href="#" onclick="submitFormMultipleTimes(); return false;">Clicky Clicky</a> 

참고 :

  • 을 선택한 항목의 값을 얻기 위해 프로토 타입의 $F() 방법을 사용.

  • Ajax.Request을 사용하여 데이터를 POST으로 서버에 보냅니다. 서버에
    이 단지 형식에서 데이터를 얻을 요청의 몸에서 그것을 스틱 Form.serialize을 사용하여 정상적인 형태를

  • 를 제출 정확히 같은 보인다.
    이것은 브라우저 DOM을 수정하지 않는 한 양식 일반적으로

1

를 제출 한 경우 전송받을 것입니다 동일한 데이터, 난 당신이 할 이유 생각할 수 없다. (그러나 당신이하고 싶은 것을 완전히 모르는 상태에서이 경우 = 틀릴 수 있습니다.)

하나의 POST에서 다중 객체 (양식의 중첩 된 복합 객체 포함)의 데이터를 다시 전송할 수 있어야합니다 .

레일즈 코드는 작성하는 자바 스크립트보다 훨씬 덜 복잡하고 쓰기 쉽고 디버깅하기 쉽습니다.

사용자가 선택한 항목에 따라 페이지의 다른 부분을 업데이트해야하는 경우 render : update 블록에서 RJS를 통해 DOM을 여러 번 업데이트 할 수 있으므로 문제가되지 않아야합니다.

여러 개의 POSTS를 사용해야하는 다중 경로 대신 단 한 번의 서버 왕복으로도 많은 이점이 있습니다.

관련 문제