jQuery를 사용 할 수 없을 때 javascript에서 form 태그를 serialize해서 form 태그 내의 name속성을 가지는 태그들의 값을 가지고 올 때 사용한다.
/** IE 에서는 obj.serialize() function이 동작하지 않기 때문에 아래와 같이 만들어 준다. */ function serialize(form) { if (!form || form.nodeName !== "FORM") { return; } var i, j, q = []; for (i = form.elements.length - 1; i >= 0; i = i - 1) { if (form.elements[i].name === "") { continue; } if (form.elements[i].disabled === true) { continue; } switch (form.elements[i].nodeName) { case 'INPUT': switch (form.elements[i].type) { case 'text': case 'hidden': case 'password': case 'button': case 'reset': case 'submit': q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value)); break; case 'checkbox': case 'radio': if (form.elements[i].checked) { q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value)); } break; } break; case 'file': break; case 'TEXTAREA': q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value)); break; case 'SELECT': switch (form.elements[i].type) { case 'select-one': q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value)); break; case 'select-multiple': for (j = form.elements[i].options.length - 1; j >= 0; j = j - 1) { if (form.elements[i].options[j].selected) { q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].options[j].value)); } } break; } break; case 'BUTTON': switch (form.elements[i].type) { case 'reset': case 'submit': case 'button': q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value)); break; } break; } } return q.join("&"); }
'JavaScript' 카테고리의 다른 글
16진수인지 알아보기. isHex (0) | 2013.05.16 |
---|---|
javascript로 브라우져 종류 알아보기. (0) | 2013.05.16 |
자바스크립트 선택 (0) | 2013.04.17 |
JSON 표기법으로 클래스 생성 (12) | 2013.03.25 |
사용자 함수 만들기 2가지 방법 (13) | 2013.03.25 |
댓글