아주 자주 사용하는 자바스크립트 함수중에 동적으로 폼을 생성하고, 히든 값을 추가하고, 서브밋 하는 함수를 소개하고자 한다.

물론 자바스크립트에서 [폼네임].submit(); 으로 대부분의 포스트 방식으로 페이징이 가능하지만,

그렇게 되면 HTML 상에 폼 태그가 반드시 있어야 하고, 폼의 위치나 전송방법 때문에 애를 먹는 일이 종종 있다.

그래서 얘를 조금 바꿔봤다.

 

	/* 폼: 생성 */
	function formCreate(nm,mt,at,tg) {
	 var f = document.createElement("form");
	 f.name = nm;
	 f.method = mt;
	 f.action = at;
	 f.target = tg ? tg : "_self";
	 return f;
	} 
	
	/* 폼: 인풋 생성 */
	function formInput(f,n,v) {
	 var i = document.createElement("input");
	 i.type = "hidden";
	 i.name = n;
	 i.value = v;
	 //f.appendChild(i);
	 f.insertBefore(i, null);
	 //f.insertBefore(i);
	 return f;
	}
	
	 /* 폼: 전송 */
	function formSubmit(f) {
	 document.body.appendChild(f);
	 f.submit();
	} 

이렇게 세 개의 함수를 공통으로 사용하는 js 파일에 추가한 뒤, 아래와 같이 사용한다.

 

function goCategoryPage(category_name) {
	var frm = formCreate('frmCategory','post','/main/category.do','');
	frm = formInput(frm, 'category_name', category_name);
	formSubmit(frm);	
}

1.  첫 번째 인자는 동적으로 만들 폼 이름을 정해주는 것이고,

    두 번째 인자는 포스트 방식과 겟방식 모두를 지원하기 위해 인자로 받는다.

    세 번째 인자는 이동하고자 하는 페이지다. 서버상에 존재하는 경로를 적는다.

    위의 예제에서는 '/main/category.do' <---- 요게 이동하고자 하는 페이지다.

     ( jsp를 바로 부른다고 하면 --> "/test/formtest.jsp" 이런걸 쓰면 된다.)

    네 번째 인자는 타겟인데, 페이지를 전송하는 대상이 자신이 아닌 프레임이나, 아이프레임, 혹은 팝업일 경우

    유용하게 사용할 수 있다.(포스트 방식의 팝업에 많이 썼던 것 같다.)

2.  frm = formInput(frm, 'category_name', category_name);

    얘는 동적으로 생성한 폼에 히든 값을 추가할 때 사용한다. 위의 예제에서는 'category_name' 이란 이름으로

    받아온 값을 'category_name' 이란 변수에 담아 폼에 저장해 준다. (얘를 이용하면 지저분한 폼태그와 히든 값

   넣는 태그 없이 값을 실을 수 있다.

3.  formSubmit(frm); --> 동적으로 만든 폼을 body 태그에 붙여준다. 동적으로 만들었기 때문에 메모리상에만

    존재하던 폼을 실제 HTML에 추가하고 해당 폼을 submit 해준다.

 

'/main/category.do' 라는 페이지로 category_name 의 값을 담아서 전송한다. 해당 페이지에서는 늘 하던 것 처럼

리퀘스트로 값을 받아서 처리할 수 있다.

 

'Languages > JavaScript' 카테고리의 다른 글

웹표준과 DOM Script  (0) 2012.06.27

WRITTEN BY
GrimReaper
안녕하세요 Grim Reaper의 티스토리에 오신 것을 환영합니다.

,