개별 submit 버튼과 input이 form의 기본 동작을 덮어쓰는 방식을 배웁니다.
formaction, formmethod, formtarget, formenctype, formnovalidate는 특정 제출 버튼에서 form의 action과 method 등을 바꿉니다. form 속성은 입력 요소가 form 밖에 있어도 form의 id로 연결합니다.
e.submitter가 제출에 쓰인 버튼을 알려 주면, 코드는 그 버튼에 formaction이나 formmethod가 있을 때는 버튼의 값을, 없을 때는 form의 action과 method를 보여 줍니다. 그래서 발행은 form에 적힌 /publish와 post를, 미리보기는 자기 속성인 /preview와 get을 표시하고 주소는 둘 다 절대 주소로 풀려 나옵니다. 미리보기는 formnovalidate 덕분에 제목이 비어 있어도 제출됩니다.
버튼의 formAction 속성은 formaction 값이 없으면 빈 문자열이 아니라 문서 자신의 주소를 돌려주고, formMethod는 빈 문자열을 돌려줍니다. 예제가 hasAttribute로 값이 있는지 먼저 확인하는 이유입니다. 입력칸에서 Enter를 누르면 submitter는 폼의 첫 번째 제출 버튼인 발행이 됩니다.
formnovalidate를 최종 발행 버튼에 사용하면 필수값이 빠진 데이터가 전송될 수 있습니다.
직접 바꿔보세요두 버튼의 formaction과 formmethod 값을 서로 비교해보세요.