한 개의 form 안에 2개 이상의 submit 버튼이 필요한 경우가 종종있습니다.
각각의 submit 버튼이 서로 다른 함수나 스크립트를 불러야 할 경우입니다.
이런경우 여러가지 처리 방법이 있을 수 있지만, 일반적으로는 submit 버튼을 button으로 정의한 후 자바스크립트를 이용하게 됩니다.
예를 들면:
<form action="myscript.php">
<input type="text" name="email">
<input type="submit" value="주소록에 기록">
<input type="submit" value="스팸목록에 기록">
</form>
'주소록에 기록'을 누르면 myscript.php의 '주소록 기록' 함수로 이동하고, '스팸목록에 기록'을 누르면 '스팸목록 기록' 함수로 가려고합니다.
자바스크립트를 이용한다면 아마도 다음과 같을 것입니다.
<form action="myscript.php">
<input type="text" name="email">
<input type="hidden" name="what">
<input type="button" value="주소록에 기록" onClick="doSubmit('add_address');">
<input type="button" value="스팸목록에 기록" onClick="doSubmit('add_spam');">
</form>
그리고 나서 doSubmit 이라는 자바스크립트 함수에서 what hidden 값을 적절하게 변경한 후 form을 submit 할 것입니다.
이런 경우 제가 편리하게 사용하는 방법은 다음과 같습니다.
<form action="myscript.php">
<input type="text" name="email">
<input type="submit" name="what=add_address&k2=v2&k3=v3&" value="주소록에 기록">
<input type="submit" name="what=add_spam&k2=v2&k3=v3&" value="스팸목록에 기록">
</form>
위의 경우 처럼 submit 버튼의 name에 원하는 값들을 주어 이용하는 것입니다.
하지만, 아직 작동은 되지 않습니다. 한가지 작업을 더 해주어야 합니다.
submit name에 입력한 문자열이 자동으로 디코딩 되지 않기 때문입니다.
myscript.php에서 '%3D' 는 '='로 '%26'은 '&'로 각각 디코딩해 주어야 합니다.