var myform = document.getElementById("form의 id값");
var myform = document.form의 name값;
<form>
안의 <input>
요소 접근var inputEle = document.getElementById(input의 id값");
var myform = document.form의 name값;
var inputEle = myfrom.input의 name값;
var inputEle = document.form의 name값.input의 name값;
<input>
요소의 입력값 처리 : value
var myform = document.form의 name값;
var inputEle = myform.input의 name값;
inputEle.value = "input태그에 값 할당하기 텍스트"
var msg = inputEle.value;
document.form의 name값.input의 name값.value="input태그에 값 할당하기 텍스트"
var msg = document.form의 name값.input의 name값.value
<input>
요소에 대한 값의 입력 여부 조회if(!document.form의 name값.input의 name값.value) {
//값이 입력되지 않은 경우의 처리
alert("내용을 입력하세요");
//focus() : 해당요소에 선택효과 주기 (=커서 클릭 효과)
document.form의 name값.input의 namer값.focus();
return;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- action속성은 form내의 input요소에 입력된 내용을 전송받을 backend의 URL -->
<form action="https://www.naver.com" id="myform">
<div>
<label for="username">사용자이름</label>
<input type="text" name="username" id="username" />
</div>
<div>
<label for="userpass">비밀번호</label>
<input type="password" name="userpass" id="userpass" />
</div>
<!-- backend에 입력값을 전송하는 버튼 -->
<button type="submit" id="btn">입력값 확인</button>
<hr />
<!-- 선택결과를 표시할 div -->
<div id="result"></div>
</form>
<script>
/* form요소 안에서 <button type="submit">을 누른 경우 */
//이 이벤트가 실행된다고해서 <form>자체의 전송기능이 사라지지는 않으므로, 이벤트 처리 후 전송을 방지하기위한 코드를 적용해야 한다.-> e.prventDefault();
/* 1.form태그의 id로 접근하여 객체 생성 */
const myform = document.querySelector('#myform');
/* 2. myform의 'submit'이벤트발생시 이벤트핸들러함수 연결 */
myform.addEventListener('submit', e => {
/* 3.form태그의 submit이벤트 적용시 반드시 첫페이지에 정의한다. */
//-> 안해놓을 시 submit에 기본동작인 '새로고침'이 되어 form 태그의 action url로 이동한다
e.preventDefault();
/* 4. input#username 과 input#userpass를 객체로 가져온다 */
const username = document.querySelector("#username");
const userpass = document.querySelector("#userpass");
/* 5.if문으로 value속성값이 없을 때 기능 정의내용 */
if (!username.value) {
//alert() : 메시지 팝업 표시하기
alert("사용자 이름을 입력하세요.");
//객체.focus() : 강제로 입력커서를 위치시킴
username.focus();
//입력값이 완전하지 않으므로 이후 처리과정이 무의미하기 때문에 처리과정 중단을 위한 return 사용
return;
}
if (!userpass.value) {
alert("비밀번호를 입력하세요.");
userpass.focus();
return;
}
/* 6.모든 if문을 통과했다면 입력내용을 #result에 출력 */
document.querySelector("#result").innerHTML = "사용자이름 :" + username.value + "<br/>비밀번호" + userpass.value;
//중단시켜놓은 <form>의 원래 기능을 무시하고 강제 전송
// e.currentTarget.submit();
});
</script>
</body>
</html>
input 태그는 form 태그 중에서 가장 중요한 태그로 사용자로부터 데이터를 입력받기 위해 사용된다.
<input>
태그는 다양한 종류가 있는데 type속성에 의해 구분된다.
form 태그 내에 존재하여야 입력 데이터를 전송할 수 있으나 ajax를 사용할 시에는 form 태그 내에 존재하지 않아도 된다.
서버에 전송되는 데이터는 name 속성을 키로, value 속성을 값으로하여 key=value의 형태로 전송된다.
폼 요소의 이벤트는 내부 <button>
또는 <input>
의 type 속성에 따릅니다. 폼은 서버에 작성된 데이터를 보내기 위함이므로 submit 이벤트가 거의 사용되며, type="submit"의 인터페이스를 클릭하면 폼 내부에 입력된 모든 내용(value)을 서버에 제출하는 동작이 일어납니다. 이는 submit의 기본(default) 이벤트입니다.
이때, 이벤트를 등록하는 객체는 버튼이 아닌 폼 요소에 지정해야 합니다. 이렇게 하면 인터페이스를 감싼 <form>
은 submit 이벤트 함수가 바인딩 된 대상(this) - event.currentTarget(=이벤트핸들러가 부착된것)이 되며, submit 버튼은 실제 이벤트가 발생하는 대상 - event.target이 됩니다.
참고: 이벤트 위임(Event Delegation)
하지만 데이터를 서버로 전송하지 않고 다른 목적으로 사용하려면, 이 기본 이벤트를 취소해줘야 합니다. 이를 위해서 리스너 함수에 매개 변수로 들어오는 event 객체에 다음의 API 메소드를 사용합니다.
event.preventDefault()
단, 해당 이벤트가 취소 가능한 이벤트여야 하며, 이는 event.cancelable로 확인 가능합니다.
https://nykim.work/96 (버튼태그와 인풋타입버튼에 관한 이야기)