2012-11-13 3 views
1

jQuery를 사용하여 제네릭 함수를 만들려고하고 있지만 어떤 이유로 호출되지 않습니다. 아래에 표시된대로 알림을 추가하면 첫 번째 알림 'My plugin invoked'이 표시되지만 두 번째 'Submitting' 알림이 나타나지 않습니다.내 jQuery 플러그인이 호출되지 않음

도움을 주시면 대단히 감사하겠습니다. 감사

$(document).ready(function() { 

    jQuery.fn.ajaxFormSubmit = function(parameter1, parameter2) { 
    alert('My plugin invoked...'); 
     this.submit(function(e) { 
      alert('Submitting.......'); 
      $.ajax({ 
       url: "/Servletpath", 
       dataType: "json", 
       data: { //data 
        }, 

       success: (function(data) { 
          alert('success'); 
         }), 
       error: (function() { 
          alert('error'); 
         })   
      }); 
      return false; 
     }); 
    }; 

    $("#search").live("click", function() { 
     var parameter1 = $("#id1").val(); 
     var parameter2 = $("#id2").val(); 
     $("#form_id").ajaxFormSubmit(parameter1, parameter2); 
     return false; 
    }); 
}); 
+0

가 확실'$ ('#의 form_id')'('경고 ($ ('#의 form_id') 길이) 요소를 일치되어 있습니까 도움이 될 것이다)? 또한 * submit *이 실행 된 후에 이벤트를 첨부하지 않는지 확인하십시오 (이벤트 처리기 내에서 이벤트를 연결할 때 항상 고려해야 할 사항). – Matt

+1

[jQuery'.live()'는 jQuery 1.7에서 더 이상 사용되지 않습니다.] (http://api.jquery.com/live/). [대신'.on()'사용] (http://api.jquery.com/on/). – Sparky

+2

'# search'를 클릭하면 폼이 전송 될 것으로 예상되지만, 플러그인을 호출 할 때 단순히 클릭 핸들러를 클릭하면됩니다. 플러그인 호출은 무엇을해야합니까? – pimvdb

답변

1

this.submit(function() {...})이 (가) 제출 트리거하지 않습니다. 폼이 제출 된 다음 콜백을 호출 할 때까지 기다립니다. `;.이

this.submit(function(e) { 
    ... 
}).trigger('submit'); 

하거나

jQuery.fn.ajaxFormSubmit = function(parameter1, parameter2) { 
    alert('My plugin invoked...'); 
    alert('Submitting.......'); 
    $.ajax({ 
     url: "/Servletpath", 
     dataType: "json", 
     data: { //data 
       }, 
     success: function(data) { 
         alert('success'); 
        }, 
      error: function() { 
         alert('error'); 
        }   
     }); 
    }; 
+0

이것은 * 및 * trigger를 바인드합니다. 각 요소에 대해 코드를 실행하는 것이면 'this.each'가 될 수 있습니다. – pimvdb

+0

감사합니다 @ devnull69! 그것은 작동합니다. –

관련 문제