반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 리눅스셋팅
- include지시자
- Linux셋팅
- StringWriter
- 아이디중복
- interrupted()
- 표현 언어
- String char[] 형변환
- 상관서브쿼리
- ObjectInputStream
- Linux세팅
- MemoryStream
- 스레드그룸
- sleep()메소드
- ID중복
- include 지시자
- InputDialog
- first-of-child
- first-child
- char[] String 형변환
- 동기화
- isinterrupted()
- interrupt()
- ThreadGroup()
- StringReader
- Daemon()
- 메모리스트림
- 상관 서브 쿼리
- 리눅스세팅
- include액션태그
Archives
- Today
- Total
다연이네
[days05] 1) js 클래스 + constructor 2) form태그 유효성 검사 본문
반응형
1. JS 클래스
ES6 (ECMAScript 2015)
- javascript 클래스를 도입했다.
- class 키워드 + 항상 constructor() 함수(메소드) 추가
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<div id="demo"></div>
<script>
class Car{
//자바라면
//private String name; 필드가 있어야하지만
constructor(name, year){ //생성자 ) 객체 생성될때 자동으로 호출되는 함수
//this == Car클래스로 생성된 객체(자기자신)
this.name=name; //js는 그냥 이렇게 선언하면 name, year 필드가 만들어진 것이다.
this.year =year;
}
//메소드
age(year){
return year - this.year;
}
}
//var -> let 준 이유 ? (let: 블럭영역에서 사용되는 거니까 , 블럭 안에서 사용 안하면 그냥 var과 똑같은 의미)
let myCar =new Car("BMW",2020);
$("#demo").html(myCar.name + "/" + myCar["year"] + "/" + myCar.age(2025));
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<script>
//ES6 (ECMAScript 2015) js에서도 클래스를 도입했다고 했다.
class Car{
constructor(name, year){
this.name=name;
this.year = year;
}
//static붙은 애도 선언 가능 (예전에 객체가 아니라 클래스명으로 호출했었다 => 똑같이)
static hell(){
return "hi!";
}
//호출시 : Car.hell() 하면된다
//getter, setter도 선언 가능했다
get carname(){
return this.name;
}
set carname(name){
this.name = name;
}
//메소드도 선언 가능했다
age(y){
//매개변수 없을때
//let d = new Date();
//return d.getFullYear()-this.year();
return y-this.year;
}
present(){
return 'I have a '+this.name;
}
}
let myCar1 = new Car("Audi",2020);
//myCar1.age(); 매개변수 없을때
//myCar1.age(2015); //매개변수 있을때
//js에도 클래스간의 상속을 표현할 수 있다
class Model extends Car{
constructor(name, year, mod) { //name과 year은 부모클래스의 생성자를 호출해서 넘겨주겠다
super(name, year);
this.model = mod;
}
show(){
return this.present()+", it is a "+this.model;
}
}//자바와 동일한 super 키워드 사용
</script>
</body>
</html>
2. form태그 유효성 검사
Name을 적지 않고 엔터친 경우 |
|
Age를 적지 않고 엔터친 경우 |
Name과 Age를 모두 적어야 페이지가 넘어간다. |
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<form action="ex10_ok.jsp" method="get"
onsubmit="return validateForm()" name="form1"
> <!-- return 씀으로써 처리결과 반환 (false면 넘어가지 않도록)-->
Name: <input type="text" name="name" autofocus />
<br>
Age: <input type="text" name="age" />
<br>
<input type="submit" />
</form>
<!-- form 태그 여러개 있어도 된다-->
<form action=""></form>
<form action=""></form>
<form action=""></form>
<form action=""></form>
<script>
function validateForm() {
//alert("확인");
//입력값에 대한 유효성 검사
//document.getElementById(id)
//document.getElementsByClassName(name)
//document.getElementsByTagName(tagName)
//등등 여러 코딩으로 얻어왔었는데,
//document.forms 컬렉션을 사용해보겠다
//5개 폼태그 중 index 값줘도 좋고, name 속성이 있다면 그 값으로 얻어와도 좋다
//document.forms[0]
var name = document.forms["form1"]["name"].value;
if(name.trim().length==0){
alert("name은 필수 입력항목입니다.");
//이벤트(submit) 취소
document.forms["form1"]["name"].focus();
return false;
}
var age = document.forms["form1"]["age"].value;
if(age.trim().length==0){
alert("age은 필수 입력항목입니다.");
//이벤트(submit) 취소
document.forms["form1"]["age"].focus();
return false;
}
}
</script>
</body>
</html>
jquery로 수정
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<form id="form1" name="form1"
action="ex10_ok.jsp" method="get">
Name: <input type="text" name="name" autofocus id="name" />
<span></span>
<br>
Age: <input type="text" name="age" id="age" />
<span></span>
<br>
<input type="submit" />
</form>
<form action=""></form>
<form action=""></form>
<form action=""></form>
<form action=""></form>
<script>
$("#form1").submit(function(event) {
//alert("test");
if($("#name").val().trim().length==0){
$("#name")
.next() //span태그
.css("color","red")
.text("*필수 입력 항목")
.show()
.fadeOut(1000); //1초
//이벤트 취소
event.preventDefault();
}//if
if($("#age").val().trim().length==0){
$("#age")
.next() //span태그
.css("color","red")
.text("*필수 입력 항목")
.show()
.fadeOut(1000); //1초
//이벤트 취소
event.preventDefault();
}//if
})
</script>
</body>
</html>
jQuery에서 이벤트를 취소하는 함수
event.preventDefault();
반응형
'Web > JavaScript' 카테고리의 다른 글
[days06] js call()/apply() 메소드 (0) | 2020.12.16 |
---|---|
[days05] js 객체와 함수 (0) | 2020.12.15 |
[days05] Arrow Function (화살표 함수)와 this (0) | 2020.12.15 |
[days05] 변수, var /let /const 키워드 (0) | 2020.12.15 |
[days05] js try~catch (0) | 2020.12.15 |
Comments