웹 전반, 브라우저/HTML, CSS

form, input 태그 + etc

DarrenKwonDev 2020. 3. 27. 18:15

그 동안 주먹구구식으로 해결왔던 from, input 태그를 정리해보기로 했다.

 

 

form

 - action : submit된 정보들을 서버의 어디로 전송할 것인지

 - method : get, post(url로 입력값 노출하고 싶지 않을 때) form에 작성한 내용은 거의 90% post 방식을 사용함

 - enctype : file을 제출하는 form일 경우에 필요함. 대개 멀티파트 업로드를 지정하기 위함. multer를 활용한 업로드시에 반드시 지정해줘야 함. 대개 multipart/form-data enctype="multipart/form-data"값을 줌.

 

input

 - type : text, password, email, textarea, radio, checkbox, reset, hidden, file 등 적합한 속성을 사용

    - textarea는 여러 줄의 텍스트를 입력될 때 사용되며 cols, rows로 크기를 조정할 수 있음

    - radio는 단일 선택, checkbox는 다중 선택을 의미한다.

    - reset은 폼 내부에 입력한 정보를 초기화합니다.

    - file은 multer 활용시 이미지나 동영상 등의 파일을 업로드하는 곳임

 - name : 각 input들을 구별하기 위한 고유한 이름 (method가 get 방식일 경우 form의 action 이후 name=값으로 붙어서 정보 전달) 단순한 이름이라 생각하기 쉽지만 추후 input을 통해 제출된 정보들이 객체의 name 키로 들어가는 것이 대부분이기 때문에 중요한 속성입니다.

 - id : name과 구별되는 속성이지만 혼동을 방지하기 위해 가급적이면 name과 같은 값을 줍니다.

 - required는 필수 여부입니다. 적지 않으면 false가 기본값입니다.

 - accept은 type: file 시 어떤 종류의 파일을 받아들일 것인지를 결정합니다. 예를 들면 accept="image/gif, image/jpeg, image/png"는 image 중 gif, jpeg, png만을 허용한다는 것이며 video/* 비디오의 모든 확장자를 허용한다는 의미입니다.

 - placeholder : input이 focus되기 전 까지 떠 있는 일종의 안내문

 - value : 해당 input의 값. input.value로 입력한 값을 사용할 수 있지만 태그 안에 적으면 기본값을 말함

<form action="http://localhost/login.php" method="post" enctype="multipart/form-data">
    <p>text : <input type="text" name="id" value="default value"></p>
    <p>password : <input type="password" name="pwd" value="default value"></p>
    <p>textarea : <textarea cols="50" rows="2">default value</textarea></p>
    <input type="submit">
    <input type="reset">
</form>
.form-container
  form(action=`/videos${routes.upload}`, method="post", enctype="multipart/form-data")
    label(for="file") Video File
    input(type="file", id="file", name="file", required=true, accept="video/*")
<form action="http://localhost/order.php">
  <h1>색상(단일선택)</h1>
    붉은색 : <input type="radio" name="color" value="red">
    검은색 : <input type="radio" name="color" value="black" checked>
    파란색 : <input type="radio" name="color" value="blue">
  <h1>사이즈(다중선택)</h1>
    95 : <input type="checkbox" name="size" value="95">
    100 : <input type="checkbox" name="size" value="100" checked>
    105 : <input type="checkbox" name="size" value="105" checked>
  <input type="submit">
</form>

 

Label

label에는 for, input에는 id를 주고 같은 값을 줌으로써 해당 태그가 무엇을 의미하는지 표시하게 됩니다. label 태그 내부에 포함시켜도 기능은 같습니다. 다른 기능이 있다기보다는 사용자에게 좀 더 명확한 정보를 주기 위해 사용됩니다. 라벨을 클릭해도 해당 태그를 누른 것과 동일하게 작동합니다.

<label for="your_pwd">
<input id="your_pwd" type="password" name="pwd">

<label> password
  <input type="password" name="pwd">
</labe>

 

 

 

Button

Button은 JS와 연동하여 onclick 함수를 처리할 때 사용되곤합니다. 그러나 이렇게 되면 html와 js가 뒤섞여서 관리하기 힘드므로 DOM을 이용해 addEventListener를 사용하는 것이 더 낫습니다.

<button onclick=""}>hello</button>

 

 

Dropdown list (select, option) 

<form action="http://localhost/color.php">
  <h1>색상</h1>
    <select name="color">
      <option value="red">붉은색</option>
      <option value="black">검은색</option>
      <option value="blue">파란색</option>
    </select>
  <h1>색상2 (다중선택)</h1>
    <select name="color2" multiple>
      <option value="red">붉은색</option>
      <option value="black">검은색</option>
      <option value="blue">파란색</option>
   </select>
   <input type="submit">
</form>