2012-10-29 3 views
0

웹 응용 프로그램을 개발 중입니다. 양식이있는 페이지 (form1)가 있으며, 양식이있는 다른 페이지 (form2)를 form1 안에 넣고 있습니다. 두 양식 모두 일부 값을 갖습니다. 두 양식을 모두 직렬화하려고합니다. $('#form1').serialize();과 같은 루트 양식 (form1)을 지정하면 form2이 아닌 루트 양식 (form1) 만 직렬화합니다.Jquery에서 중첩 된 폼 실링이 작동하지 않습니다.

이렇게 지정하면 $('#form1, #form2').serialize();$('form').serialize();은 모든 양식을 봉인합니다.

form2가 아닌 루트 폼을 serialize하는이 jQuery $('form1').serialize();의 문제점은 무엇입니까?

jsFiddle example으로 시도해 보았는데 정상적으로 작동합니다. 웹 응용 프로그램 양식의 문제점은 무엇입니까?

답변

1

:input 선택기를 사용할 수있는 용도로도 지원되지 않습니다.

$('#form1 :input').serialize(); 

필터를 사용하는 것이 좋습니다.

$('#form1 > *').filter(':input').serialize(); 

중첩 된 양식을 사용하는 이유를 설명 할 수 있다면 몇 가지 해결 방법을 제안 할 수 있습니다. 예를 들어, AJAX 요청에 두 번째 양식 만 사용하는 경우 div로 덮어서 해당 양식 항목을 쉽게 선택하거나 추가 클래스에 제공하고 유사한 선택기를 사용할 수 있습니다.

+0

나는 재사용 가능한 페이지 (form2)를 생성했다. 그래서 폼 (form2) 서브 페이지로 생성 된 그래서 내 응용 프로그램의 여러 탭이이 페이지가 필요합니다. 이 양식 (form1)을 가지고있는 다른 페이지 (form1 페이지)에서이 페이지 (form2)를 누르면. – Muthu

+1

경우 양식 태그 (form 태그가 아닌)로 form2Page를 생성하고 div로 덮어서 jQ로 쉽게 선택하고 원하는 곳에이 양식을 삽입하십시오. form2 요소 만 필요하면 양식 요소에 삽입하십시오. 이것은 좋은 접근 방식입니다 (제 생각 엔). –

2

HTML에 중첩 된 양식을 사용할 수 없습니다. jQuery는이를 처리 할 수 ​​없습니다. 그들을 생성하지 마십시오.

+1

jsFiddle에서 작동하는 이유는 HTML에서 잘못된 중첩 된 양식을 제거했기 때문입니다. Firebug에서 확인하면 알 수 있습니다. –

+0

-1 이는 해결책이나 제안이 아니기 때문에 -1입니다. 그냥 "그걸지지하지 않는다"또는 "하지 마라"라는 말은 답이 아닙니다. 불행히도 어떤 경우에는 이런 종류의 지원되지 않거나 해결되지 않은 물건을 개발해야합니다. –

관련 문제