728x90
on 속성이벤트
- 모든 태그에는 접두사 on이 붙은 속성이 있다.
- 접두사 on 속성은 자바스크립트와 연계된다.
- 접두사 on 속성은 사용자의 행위에 관련된 속성이다.
- 두개이상 사용 가능
자주 쓰이는 이벤트
onclick : 사용자가 클릭했을 때
<div onclick="alert('클릭이벤트');"
style="display:inline; border:3px solid #f00; padding:10px; cursor: pointer;">
난 버튼이 아닌데
</div>
<button type="button" onclick="alert('클릭!!!');">버튼</button>
<button type="button" onclick="location.href='https://naver.com'">네이버이동</button>
<button type="button" onclick="myClick(this);" value="홍길동">함수연계</button>
<script type="text/javascript">
function myClick(obj) {
console.log([obj]);
}
</script>
onchange : 사용자의 행위에 의해 값이 변경 되었을 시
<select onchange="myChange(this);">
<option value=""> :: 값 선택 :: </option>
<option value="1"> 1 </option>
<option value="2"> 2 </option>
<option value="3"> 3 </option>
</select>
<script type="text/javascript">
function myChange(obj) {
console.log(obj);
console.log(obj.value);
}
</script>
onblur : 커서 활성화가 없어 졌을 때
<input type="text" onblur="myBlur(this);">
<script type="text/javascript">
function myBlur(obj) {
console.log(obj.value);
}
</script>
onkeyup : 키를 눌렀다가 땠을 경우
<input type="text" onkeyup="myKey(this, 'up');" onblur="myKey(this, 'blur')">
<script type="text/javascript">
function myKey(obj, type) {
console.log(obj.value, type);
}
</script>
Form
- form 태그에 name속성에 값을 지정하면 해당 지정된 값을 윈도우 객체에 등록해준다.
- form의 하위 요소가 있다면 form객체 하위에 등록을 name 키 명칭으로 하위 요소 객체를 등록해준다.
<form name="myForm" method="post">
<input type="text" name="userName">
<input type="radio" name="userGender" value="남">남
<input type="radio" name="userGender" value="여">여
</form>
<button type="button" onclick="myFormFn();">전송</button>
<script type="text/javascript">
console.log(myForm);
//객체 속성으로 폼 속성 값 지정하기
myForm.action='user.jsp';
console.log(myForm.userName);
function myFormFn() {
var f = myForm;
if(f.userName.value.trim() == ''){
alert('값을 입력 하셔야합니다.');
//focus() -> form 객체에 커서 활성화시
f.userName.focus();
return;
}
//동일한 name의 값을 가진 객체가 2개 이상 일시 배열로 받아 오게 된다.
console.log(f.userGender);
var cnt = 0;
for(var i=0; i<f.userGender.length; i++){
//체크가 되어 있다면 true 아니라면 false
if(f.userGender[i].checked){
cnt++;
}
}
if(cnt == 0){
alert('성별을 체크 해주세요.')
f.userGender[0].focus();
return;
}
//form 객체에는 submit 메서드가 있다.
//submit메서드 실행시 action에 명시된 경로로 양식 전송
f.submit();
}
</script>
더보기
실습1. 계산이라는 버튼을 클릭시 n1값과 n2값을 합산하여 nSum에 적용 시켜라
<form name="shopPrice">
<input type="number" name="n1" > +
<input type="number" name="n2"> =
<input type="number" name="nSum" readonly="readonly">
<button type="button">계산</button>
</form>
풀이
<!-- 버튼에 onclick이벤트 추가 -->
<button type="button" onclick="fnSum()">계산</button>
<script type="text/javascript">
function fnSum() {
var f = shopPrice;
var n1 = Number(f.n1.value);
var n2 = Number(f.n2.value);
f.nSum.value = n1+n2;
}
</script>
결과
실습2. 계산이라는 버튼을 아래의 체크박스의 체크된 대상의 가격을 합산하여 sSum에 결괏값을 출력하여라.
<form name="sPrice">
<input type="checkbox" name="com" value="5000"> 컴퓨터 부품 : 5000
<input type="checkbox" name="com" value="4000"> 컴퓨터 부품 : 4000
<input type="checkbox" name="com" value="3000"> 컴퓨터 부품 : 3000
<input type="checkbox" name="com" value="2000"> 컴퓨터 부품 : 2000
<input type="checkbox" name="com" value="1000"> 컴퓨터 부품 : 1000<br>
<input type="number" name="sSum" readonly="readonly">
<button type="button">계산</button>
</form>
풀이
<!-- 버튼에 onclick 이벤트 추가 -->
<button type="button" onclick="sPriceSum()">계산</button>
<script type="text/javascript">
function sPriceSum() {
var f = sPrice;
var sum = 0;
for(var i=0; i<f.com.length; i++){
if(f.com[i].checked){
sum += Number(f.com[i].value);
}
}
f.sSum.value = sum;
}
</script>
결과
선생님 풀이
function sSumFn(){
var comArray = sPrice.com;
var sum = 0;
for(var i=0; i<comArray.length; i++){
if(comArray[i].checked){
sum += Number(comarray[i].value;
}
}
sPrice.sSum.value = sum;
}
실습3. 옵션 및 수량이 변경 될 경우 총가격,부가세,총 결제 금액을 계산하여 해당 영역에 출력하도록 하여라.
<form name="goodsView">
<input type="text" name="goodsPrice" value="10000" readonly>
<select name="goodsOption">
<option value="0"> :: 옵션 없음 :: </option>
<option value="1000"> 추가 a 타입 : 1000 </option>
<option value="2000"> 추가 b 타입 : 2000 </option>
<option value="3000"> 추가 c 타입 : 3000 </option>
</select>
<select name="goodsNum">
<option value="1"> 1개 </option>
<option value="5"> 5개 </option>
<option value="10"> 10개 </option>
<option value="15"> 15개 </option>
</select><br>
총가격 : <input type="text" name="totalPrice" value="0" readonly>
부가세 : <input type="text" name="totalVat" value="0" readonly> <!-- 세금 10% -->
총 결제 금액 : <input type="text" name="paymentPrice" value="0" readonly>
</form>
풀이
//select태그들에 onchange 이벤트 추가
function goodsFn() {
var f=goodsView;
var goodsOption = Number(f.goodsOption.value);
var goodsNum = Number(f.goodsNum.value);
/*
총가격 : (10000 + 옵션 ) * 수량
부가세 : 총가격 * 0.1
총 결제 금액 : 총가격 + 부가세
*/
var totalPrice = (10000+goodsOption)*goodsNum;
f.totalPrice.value = totalPrice;
f.totalVat.value = totalPrice * 0.1;
f.paymentPrice.value = totalPrice + (totalPrice*0.1);
}
결과
선생님풀이
function goodsPriceSum(){
var price = Number(goodsView.goodsPrice.value);
var option = Number(goodsView.goodsOpion.value);
var num = Number(goodsView.goodsNum.value);
var total =(price + option) * num;
var vat = total * 0.1;
goodsView.totalPrice.value = total;
goodsView.totalVat.value = vat;
goodsView.paymentPrice.value = total + vat;
}
정규표현식으로 숫자만 입력받기
<input type="text" onkeyup="onlyNumber(this)" onblur="onlyNumber(this)">
<script type="text/javascript">
function onlyNumber(target) {
var regex = /[^0-9]/g; // ^:반대 , g:전체 -> 숫자(0~9)가 아닌(^) 모든(g) 값들
var result = target.value.replace(regex, ""); //숫자가 아닌 모든 값들을 공백으로 치환
console.log(target.value, 'input값');
console.log(result, '정규표현식에 관련된 값을 공백으로 치환');
target.value = result; //치환된 값을 재대입
}
</script>
'{ "Hello World!" }; > JavaScript/jQuery' 카테고리의 다른 글
(JavaScript) document 객체 (0) | 2022.01.08 |
---|---|
js/ 회원가입 유효성 검사(공백만) (0) | 2022.01.07 |
(JavaScript) 내장객체 (0) | 2021.12.31 |
(JavaScript) 브라우저 객체 모델 (0) | 2021.12.31 |
js/ 2022년 D-day (0) | 2021.12.31 |