JavaScript/DOM은 웹이라는 녀석에 기본적으로 포함되는 것이 아니다. 이 말인즉슨, 포함이 안될 경우도 있다는 것이다. 따라서, JavaScript/DOM 사용에 있어서, 포함이 안될 경우에는 어떻게 될것인가에 대한 고찰이 필요하다. 이렇게 얘기해서는 너무 복잡하게 생각될 수도 있겠다. 예를 한번 들어보자. 버튼을 누르면 폼을 서브밋하고 싶다.. 는 예를 들어보겠다. 편의상 일부 필수 태그는 누락시킨 점.. 이해해주시길.. :)
<html>
<head>
<script type="text/javascript">
function checkForm(form) {
if (form.elements["title"].value == "") {
alert("제목을 입력해주세요");
return;
}
form.submit();
};
</script>
</head>
<body>
<form action="someaction">
<p>
제목 <input type="text" name="title" />
<input type="submit" value="전송" />
<a href="javascript:checkForm(document.forms['someaction'])">전송</a>
</p>
</form>
</body>
</html>
<html>
<head>
<script type="text/javascript">
function checkForm(form) {
if (form.elements["title"].value == "") {
alert("제목을 입력해주세요");
return false;
}
return true;
}
</script>
</head>
<body>
<form action="someaction" onsubmit="return checkForm(this)">
<p>
제목 <input type="text" name="title" />
<input type="submit" value="전송" />
</p>
</form>
</body>
</html>
위는 나쁜 녀석이고, 아래는 좋은 녀석이다. -_-;;
위의 코드가 무엇이 나쁜고 하니.. JavaScript가 인식되지 않는 브라우저에서는 "javascript:checkForm()" 식의 링크가 어떤 지시를 내리는지 알 수가 없다. "checkForm()" 자체가 JavaScript니까… 따라서 폼 체크를 할 수 없고 서브밋은 꿈도 못꾸게 된다.
반대로 아래의 코드는 기본적으로 HTML에서 폼 서브밋에 사용되는 submit button이 있어 서브밋에 지장이 없다. 폼 체크의 경우에는 JavaScript엔진이 있으면 onsubmit 메소드가 호출되어 checkForm function을 탈 것이고 없다면 onsubmit 메소드가 무시되어 아무런 에러없이 서브밋이 될 것이다.
form 값을 받은 action page에서 해당 값들을 체크하는 센스는 당연히 가지고 있을 것으로 생각한다. :)
아! 근데 이런식이라면 text로 폼 전송을 못하지 않는가? 그렇다. -_-; 안타깝게도 HTML만으로는 단순한 text가 폼 전송의 역할을 할 수 없다.
우리나라 웹시장의 웹디자인 마인드로는 심각한 일이지만, 웹이라는 녀석의 기본 목적 상 큰 문제가 될 것이 없다는 것으로 결론을 내린다! 무책임하다고 하신다면 죄송할 따름.. ㅠㅠ
다음 시간에 계속 쓰겠습니다.. :)