form 자체는 1개의 action으로 이어지도록 되어있습니다.
한 페이지에 form이 여러개 있어도 상관은 없으나, form 1개당 1개의 action으로 연결되므로 다른 form에 있는 내용은 현재 form에서 참조하면 안되죠.(참조할 수 없는 것은 아니나...)
그런 관점에서 본다면 fieldset은 form내의 컨트롤들에 대한 그루핑이므로 서로 다른 성격을 가진 form들을 묶을 때 쓰는 태그가 아닙니다.
(아마 validation도 안될 겁니다.)
따라서 이런 경우에는 그냥 div로 묶는 게 올바르겠습니다.
다른 form에 있는 내용은 현재 form에서 참조하면 안되죠.(참조할 수 없는 것은 아니나...)
특별한 이유라도 있나요?
지금, 폼에서 다른 폼을 참조하려고 하는데요..
실제로 전송하기 위한 폼은 하나입니다.
나머지 폼은 참조용이구요..
다른 폼의 내용을 참조하려면 javascript를 필수적으로 써야 합니다. (아니라면...orz)
하지만 제가 아는 한 어떠한 form이라도 javascript 없이 구현이 가능하며, javascript를 사용하지 않아도 form은 제기능을 하여야 합니다. 부득이하게 두개의 폼을 써야만 작동을 하는 경우는 기존에 개발 된 것을 수정하지 않아야 하는 상황 외에는 없다고 생각 합니다. 하나의 폼으로 작동가능하게 만드는 것이 가능할 겁니다.
하지만 다른 폼의 내용을 참조하게 한다면, 굳이 폼을 두개로 하지 않아도 될 것을 두개로 나누고 javascript를 사용함으로써 작업만 번거로와지고(해석하기 힘들고) 접근성을 떨어뜨리게 됩니다.
따라서 하나의 폼으로, javascript를 사용하지 않고 액션이 일어날 수 있게 구성해야 합니다.
여러개의 form이 한 view페이지에서 쓰이는 경우는 여러개의 logic프로그램으로 form의 값(post/get)을 넘겨주기 위해서입니다. 사실, 이것도 UI라는 관점에서 보자면 별로 바람직한 모습은 아닙니다. 어느 한 form의 값만 해당하는 logic으로 넘어가기 때문에, 다른 form들은 소위 낭비..가 되는 셈이니까요. 그렇다고는 해도, 이 정도는 가능하고, 틀렸다고 말할 수는 없습니다.
submit이 이루어지는 main form 한 개에, submit없는 sub form 여러개. 이건 좀 문제가 됩니다.
애초에 코딩이 잘못되었다고 할 수 있겠죠.
submit이 없는 form이라면 없애버리고 거기에 사용된 컨트롤들을 main form안에 배치하세요. (이 포럼의 독자분들이라면 여기에서 배치가 "디자인적인 배치"를 말하는 것이 아니라 "구조화"에 대한 이야기임을 아실 겁니다.)
참조를 위한 컨트롤에 별도의 form을 부여할 필요는 없습니다.
javascript를 쓰건 안쓰건간에, 하나의 logic(submit target)에 하나의 form을 할당하는 것이 올바른 방식입니다.
설령, 전달하는 값에 따라 여러개의 logic으로의 분기가 필요하더라도, 값을 넘겨받은 후 logic안에서 분기하는 쪽이 더 좋습니다.
javascript문제는 좀 애매해서,
javascript는 option입니다. 웹표준에 직접적으로 들어가는 것도 아니죠. javascript를 사용할 때 유의점은, javascript를 쓰지 않고서도(혹은 사용할 수 없을 경우에도) 제대로 동작하는 페이지를 만든다는 것만 유의하시면 됩니다.
대개의 경우 문제가 되는 것은, submit이 이루어지기 전에, control의 value들을 validation하는 등의 전처리를 하는 경우 등에 많이 쓰이는데요.
예를 들어서, "숫자값만 허용하는 컨트롤"이라는 것이 필요하다 하여 javascript로 "숫자외의 값이 입력되었을 때에는 입력 무시"등의 스크립트코드를 넣고 끝내는 경우가 많은데,
이러한 경우 javascript를 막아놓거나 javascript가 작동되지 않는 환경에서는 의도하지않은 오동작이 발생할 수 있습니다. 이 예에서는 javascript가 안되는 브라우저에서는 숫자외에 문자값이 입력되어도 아무 문제없이 logic페이지로 넘어가게 되겠죠.
따라서, 이 경우에는 javascript를 사용하는 것에 더불어, 값을 넘겨받은 logic프로그램에서도 다시 한번 해당 값에 대해 전처리를 해주는 것이 좋습니다. 숫자외의 문자값이 넘어왔다면 에러메시지를 출력하고 다시 입력을 요구받는다든가 하는 식으로요.
좀 귀찮긴 하겠지만, 보안이라든가, 무결성 확인을 위해서도 javascript에 의존적인 UI를 만드는 것은 자제해야겠습니다.