2013-04-26 1 views
1

항목 테이블이 있습니다.jQuery on ("submit")은 다른 양식 안에 있기 때문에 ajax로로드 된 요소에 바인딩하지 않습니다.

각 행의 첫 번째 열에는 양식의 일부로 입력 된 확인란이 있습니다. 사용자는이 체크 박스를 클릭하고 제출을 클릭하여 항목 삭제와 같은 대량 작업을 수행 할 수 있습니다.

행 열의 '데이터 추가'링크를 클릭하면 사용자가 항목 데이터를 입력 할 수있는 세 번째 열에 다른 양식이로드되는 상황이 jquery를 사용하여 설정되었습니다.

내가 원하는 것은 아약스를 사용하여이 두 번째 양식을 제출하는 것입니다. 나는 다음과 같은 코드를 사용하고이 작업을 수행하려면 :

$(document).on('submit',".add_form",function(event) 
{ 

    event.preventDefault(); 

    var serial=$(this).serialize(); 

    var domain=$('[name=domain]').val(); 


     $.ajax({ 
    url:"portfolio/transactions/"+domain+"/", 
    type:"post", 
    data: {data:serial}, 
    success: function(dat){ 
$('#transactions_div').html(dat); 
    } 
    }); 




}); 

을 그러나 이것은 작동하지 않습니다, 나는 HTML 양식에서 양식을 허용하지 않기 때문에이 믿습니다. 제 가정은 jQuery가 이러한 표준을 따르고 다른 태그 집합에 포함 된 div에 두 번째 형식이로드 될 때 혼란스러워지고 있다는 것입니다.

이 점을 감안할 때 간단히 할 수없는 것은 무엇입니까?

감사

+1

을 양쪽 양식은 NAT가 제출 될 때 제출됩니다. ive submit 함수는 내부 폼에서 트리거되며, 외부 폼을 제출하는 것은 방지되지 않습니다. – adeneo

+0

iirc, HTML5는 중첩 된 폼을 허용하지만 내부 폼의 submit 이벤트는 아마도 거품이 생길 것임을 명심해야합니다 당신이 그것을 막지 않는 한 바깥 형태로. –

+0

새 요소를 추가 한 후에 이벤트를 제본하고 제출 단추에서 내부 양식을 제출할 때'$ ("rand-form-id"). submit(); ''또는'$ (this) .parent() .submit();'단지 몇 가지 생각 – h4cky

답변

0

이 시도 : 당신은 아마 지금의이 정기적 버튼으로 버튼을 제출 교체해야

$(document).on('submit', ".add_form", function (event) { 

    event.preventDefault(); 
    var serial = $(this).serializeArray(); 
    var domain = $('[name=domain]').val(); 

    $.ajax({ 
     url: "portfolio/transactions/" + domain + "/", 
     type: "POST", 
     data: serial, 
     success: function (data) { 
      $('#transactions_div').html(data); 
     } 
    }); 
}); 
+0

유일하게 변경된 부분은 serializeArray의 사용자입니다. 문제는이 함수가 submit ...에 포함 된 내용이 아예없는 것입니다. –

0

HTML

<form class="add_form"> 
    <form class="secondForm"> 
     <input type="checkbox" /> 
    </form> 
    <input name="domain" type="text" /> 
    <!-- Replace the submit-Button with a normal button -->   
    <input type="button" value="Send" id="send"/> 
</form> 

JS

$(document).on('click', "#send", function() { 

    var serial = $(".add_form").serialize(); 
    var domain = $('[name=domain]').val(); 

    $.ajax({ 
     url: "portfolio/transactions/" + domain + "/", 
     type: "post", 
     data: serial, // serial instead of {data : serial} 
     success: function (dat) { 
      $('#transactions_div').html(dat); 
     } 
    }); 
}); 
+0

이 작동하지만 HTML이 유효하지 않습니다. 게다가 submit 버튼 대신에 submit 버튼을 클릭하는 것만으로 html이 무효라는 이유만으로 약간의 해킹이 된 것 같습니다. –

+0

이것은 HTML 코드 예제입니다. 일부 속성이 누락되었습니다. – alexP

+0

예 제가 알고있는 것은 : 제가 말하고자하는 것은 다른 형태 안에 하나의 형식을 포함시키는 것이 문제라는 것입니다. 그것은 잘못되었습니다. I.E 이것은 잘못된 HTML없이 위의 출력을 얻을 수있는 방법에 대한 질문에 대답하지 않습니다. –

관련 문제