2009-09-27 6 views
2

두 개의 버튼이있는 양식이 있습니다. 받는 사람jquery - 프로그래밍 방식으로 여러 버튼으로 양식 제출

<input id="reply" name="reply" type="submit" value="{%trans "REPLY"%}"> 
<input id="delete" name="delete" type="submit" value="{%trans "DELETE"%}"> 

내가 (모난 플러그인을 사용하여) 확인 상자를 추가하려고 해요 : 나는 POST 데이터 요소의 name 속성을 사용하여 서버 측에서 클릭하고 그에 따라 물건을되는 일 확인 JQuery를 사용하여 DELETE 버튼의 click 이벤트.

$(document).ready(function() { 
    $("#delete").click(function(e){ 
      Boxy.ask('Delete?', {'1':'YES', '2':'NO'}, function(val){ 
       if (val=='1') $("#form").submit(); 
      }); 
     return false; 
    });  
}); 

형태로이 코드의 결과는 POST 데이터 결석 DELETE 버튼의 이름으로 제출되고 물론 다음은 코드입니다. 해당 데이터를 POST 데이터에 추가하는 방법 또는 내가 시도하고있는 것을 달성하는 더 좋은 방법이 있습니까?

답변

4

당신은 네임 스페이스 이벤트를 사용하여 다음 다시 트리거, 확인에 바인딩을 해제 할 수 :

$(document).ready(function() { 

    var $delete = $("#delete"); 

    $delete.bind("click.guard", function() { 
    Boxy.ask("Delete?", {"1": "YES", "2": "NO"}, function(val) { 
     if (val == "1") { 
     $delete.unbind("click.guard").click(); 
     } 
    }); 
    return false; 
    }); 

}); 
+0

FF3과 IE7에서 시도했지만 문제없이 작동합니다. 사실 너무 좋았어, 고마워! – shanyu

+0

니스! 확실히 모든 대상 브라우저에서 테스트해야하지만 그 이외의 ... –

+0

업데이트 : 최신 FF, IE, Chrome 및 Safari 및 IE7에서 작동합니다. – shanyu

0

가장 쉬운 방법은 삭제 단추를 별도의 양식으로 정의하는 것입니다.

+0

예, 물론 나는 단지 삭제 요청 수신 서버 측에서 다른보기로 양식을 게시 할 수 있습니다. 그러나 최선의 방법입니까? – shanyu

+0

개인적으로 나는 다른 컨트롤러에서 회신 및 삭제를 처리 할 것이므로 두 가지 모두에서 가장 좋습니다. – Zed

1

몇 가지 방법이 있습니다.

  1. 버튼 이름은 쿼리 매개 변수로 양식의 작업에 추가하여 Boxy 콜백, 오히려 POST 데이터보다 GET 할 것이 괜찮아합니다.
  2. 양식에 숨겨진 필드가 있고 Boxy 콜백에서 해당 필드의 값을 단추 이름 (또는 서버에 명령을 전달하는 데 사용할 원하는 값)으로 설정하십시오. 나는 jQuery 예제를 더 이상 사용할 수 없지만 (Prototype man 자신 만의) jQuery 예제는 상당히 간단하다. 정상적으로 성능이 저하되는 경우 (자바 스크립트없이 양식을 제출할 수 있음) 슬프게도 숨겨진 필드 (JavaScript 사용)와 서버의 버튼 이름 (둘 다 확인)을 모두 확인해야합니다. 측면.
  3. #serialize을 사용하여 양식 데이터를 가져 와서 버튼 필드를 추가 한 다음 jQuery.post을 통해 결과를 제출하십시오. 이는 페이지를 결과로 대체하지 않기 때문에 양식을 제출하는 것과 완전히 똑같지는 않습니다. post 콜백에서 처리하려고합니다.
+0

첫 번째 대안은 비 자바 스크립트 제출에는 작동하지 않습니다. 세 번째는 두 번째 것보다 조금 더 많은 (그리고 불필요한) 노력이 필요합니다. 고맙습니다. – shanyu