웹페이지

JAVASCRIPT STEP 26 - FORM 예제

2023. 4. 25. 12:28
728x90

★ 문제 1 

  • 아래와 같은 문서를 생성하시오.
  • 조건
    • 새창을 띄운 뒤 우편 번호 검색을 하시오.
    • 우편번호, 주소 : 새창에서 선택하면 자동 채우기
    • 상세주소 : 포커스 맞추기

■ HTML 코드

<form name="form1">
    <h1>우편 번호 검색</h1>
    <table id="tbl1">
        <tr>
            <td>우편번호</td>
            <td>
                <input type="text" id="zip" name="zip" readonly />
                <input type="button" value=" 우편번호검사하기" onclick="search();" />
            </td>
        </tr>
        <tr>
            <td>주소</td>
            <td><input type="text" id="address1" name="address1" readonly /></td>
        </tr>
        <tr>
            <td>상세주소</td>
            <td><input type="text" id="address2" name="address2" /></td>
        </tr>
    </table>
</form>

 

■ css 코드

<style>
    #tbl1 {
        border: 1px solid gray;
        border-collapse: collapse;
        width: 600px;
    }

    #tbl1 td {
        border: 1px solid gray;
        padding: 10px;
    }

    #tbl1 td:first-child {
        background-color: #DEDEDE;
        width: 100px;
        text-align: center;
    }

    input {
        border: 1px solid gray;
        padding-left: 3px;
    }

    #zip {
        width: 60px;
    }

    #address1, #address2 {
        width: 98%;
    }
</style>

 

■ JavaScript

<script type="text/javascript">
    function search() {

        window.open("008_search.html", "search", "width=300, height=200");		

    }
</script>

 

■ 008search.html

<!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>
    <style>
        input {
            display:block;
            margin : 10px;
        }
    </style>
</head>
<body>
    <input type="button" name="btn1" value="서울시 강남구 역삼동">
    <input type="button" name="btn2" value="서울시 강남구 대치동">
    <input type="button" name="btn3" value="서울시 강남구 도곡동">
    
    <script>
        document.all.btn1.onclick = m1;
        document.all.btn2.onclick = m2;
        document.all.btn3.onclick = m3;

        function m1() {
            opener.document.form1.zip.value = '06232';
            opener.document.form1.address1.value = '서울시 강남구 역삼동';
            opener.document.form1.address2.focus();
			window.close();
        }

        function m2() {
            opener.document.form1.zip.value = '06291';
            opener.document.form1.address1.value = '서울시 강남구 대치동';
            opener.document.form1.address2.focus();
			window.close();
        }

        function m3() {
            opener.document.form1.zip.value = '06267';
            opener.document.form1.address1.value = '서울시 강남구 도곡동';
            opener.document.form1.address2.focus();
			window.close();
        }
    </script>
</body>
</html>

 

■ 실행 결과

우편번호 검사하기 -> 주소 선택지창 -> 선택 시, 해당 우편주소와 주소가 부모 페이지에 기입

 

★ 문제 2

  • 아래와 같은 문서를 생성하시오.
  • 조건
    • 주문하시는 분 정보를 받으시는 분으로 복사하시오.

 

■ HTML 코드

<h1>주문하기</h1>

<fieldset>
    <legend>주문하시는 분</legend>
    이름 : <input type="text" name="txtName1" autofocus /><br />
    주소 : <input type="text" name="txtAddress1" />
</fieldset>

<div style="margin: 15px;">
    <input type="checkbox" name="cb1" id="cb1" onclick="copy();" /> <label for="cb1">주문하시분과 정보과 동일합니다.</label>
</div>

<fieldset>
    <legend>받으시는 분</legend>
    이름 : <input type="text" name="txtName2" autofocus /><br />
    주소 : <input type="text2" name="txtAddress2" />
</fieldset>

 

■ CSS 코드

X

 

■ JavaScript

<script>
    function copy() {

        var name1 = document.all.txtName1;
        var address1 = document.all.txtAddress1;
        var name2 = document.all.txtName2;
        var address2 = document.all.txtAddress2;
        var cb1 = document.all.cb1;

        if (cb1.checked) {
            name2.value = name1.value;
            address2.value = address1.value;
        } else {
            name2.value = "";
            address2.value = "";
            name2.focus();
        }

    }
</script>

 

■ 실행 결과

주문란에 작성 후, 체크박스 선택시, 자동으로 동일하게 기입됨.

 

★ 문제 3

  • 아래와 같은 문서를 생성하시오.
  • 조건
    • 주민번호 입력 시 나머지 컨트롤(생년월일, 성별) 제어를 하시오.
    • 주민등록 번호 앞자리 입력 완료 -> 뒷자리 자동 포커스
    • 주민등록 번호 앞자리 입력 완료 -> 생년월일 자동 완성
    • 주민등록 번호 뒷자리 첫 숫자 입력 -> 성별 자동 체크

 

■ HTML 코드

<form name="form1">
    <h1>회원 가입</h1>
    <table id="tbl1">
        <tr>
            <td>주민번호</td>
            <td>
                <input type="text" id="first-number" name="firstnumber" onkeyup="check(this);" >
                - 
                <input type="text" id="last-number" name="lastnumber" onkeyup="check2(this);" >
            </td>
        </tr>
        <tr>
            <td>생년월일</td>
            <td>
                <input type="text" id="born1" name="born1">년
                <input type="text" id="born2" name="born2">월
                <input type="text" id="born3" name="born3">일
            </td>
        </tr>
        <tr>
            <td>성별</td>
            <td>
                <input type="radio" id="man" name="man">남자
                <input type="radio" id="women" name="women">여자
            </td>
        </tr>
    </table>
</form>

 

■ CSS 코드

<style>
    #tbl1 {
        border: 1px solid gray;
        border-collapse: collapse;
        width: 600px;
    }

    #tbl1 td {
        border: 1px solid gray;
        padding: 10px;
    }

    #tbl1 td:first-child {
        background-color: #DEDEDE;
        width: 100px;
        text-align: center;
        font-weight: bold;
    }

    input {
        border: 1px solid gray;
        padding-left: 3px;
    }

    #first-number, #last-number {
        width : 70px;
    }

    #born1 {
        width : 50px;
        margin-right : 5px;
    }

    #born2, #born3 {
        width : 30px;
        margin-right : 5px;
    }

</style>

 

■ JavaScript

<script>
    function check(first) {

        var born1 = document.all.born1;
        var born2 = document.all.born2;
        var born3 = document.all.born3;

        var last = document.all.lastnumber;

        if (first.value.length == 6) {
            born1.value = "19" + first.value.substring(0, 2);
            born2.value = first.value.substring(2, 4);
            born3.value = first.value.substring(4, 6);
            last-number.focus();
        }
    }

    function check2(last) {
        var man = document.all.man;
        var women = document.all.women;

        if (last.value.length == 1) {
            if (parseInt(last.value) % 2 == 1) {
                man.checked = true;
                women.checked = false;
            } else {
                women.checked = true;
                man.checked = false;
            }
        }
    }

</script>

 

■ 실행 결과

앞자리 입력시, 생년월일 자동 기입 + 뒷자리 입력시, 성별 자동 선택

 

★ 문제 4 

  • 아래와 같은 문서를 생성하시오.
  • 조건
    • 셀렉트 박스의 항목을 좌우로 이동시키시오.

 

■ HTML 코드

<table id="tbl1">
    <tr>
        <td>
            <h4>차단된 친구</h4>
            <select name="leftList" size="10" ondblclick="add2();">
                <option value="1">권예진</option>
                <option value="2">권준혁</option>
                <option value="3">김동식</option>
                <option value="4">김세진</option>
                <option value="5">김여정</option>
                <option value="6">노형준</option>
                <option value="7">박민선</option>
                <option value="8">백강현</option>
                <option value="9">변기현</option>
            </select>
        </td>
        <td>
            <input type="button" value="Add ▷" onclick="add2();" class="btn" />
            <input type="button" value="◁ Remove" onclick="remove2();" class="btn" />
            <input type="button" value="Add All ▷▷" onclick="addAll();" class="btn" />
            <input type="button" value="◁◁ Remove All" onclick="removeAll();" class="btn" />
        </td>
        <td>
            <h4>허용된 친구</h4>
            <select name="rightList" size="10" ondblclick="remove2();"></select>
        </td>
    </tr>
</table>

 

■ CSS 코드

<style>
    #tbl1 {
        border: 1px solid gray;
        width: 500px;
        margin: 10px auto;
        border-collapse: collapse;
    }

    input {
        display: block;
        margin: 10px auto;
        padding: 5px;
    }
    
    #tbl1 td {
        border: 1px solid gray;
        text-align: center;
        padding: 15px;
    }

    h4 {
        margin: 0;
    }
    
    select {
        width: 150px;
        margin: 15px;
        height: 340px;
    }

    select option {
        padding: 5px;
    }

    .btn {
        width: 100%;
    }
</style>

 

■ JavaScript

<script>

    var leftList, rightList;

    window.onload = function () {
        leftList = document.all.leftList;
        rightList = document.all.rightList;
    };

    function add2() {
        moveOne(leftList, rightList);
    }

    function remove2() {
        moveOne(rightList, leftList);
    }

    function moveOne(left, right) {
        var selOption = left.options[left.selectedIndex];

        //rightList.options.add(selOption);

        right.options.add(new Option(selOption.text, selOption.value));

        left.options.remove(selOption.index);
    }

    function addAll() {
        moveAll(leftList, rightList);
    }

    function removeAll() {
        moveAll(rightList, leftList);
    }

    function moveAll(left, right) {
        for (i=0; i<left.options.length; i++) {
            var op = left.options[i];
            right.options.add(new Option(op.text, op.value));
        }

        var count = left.options.length;

        for (i=0; i<count; i++) {
            left.options.remove(0);
        }
    }

</script>

 

■ 실행 결과

ADD, Remove를 클릭시, 해당 선택한 항목이 좌우로 이동. Add All, Remove All 클릭시, 모든 항목이 좌우로 이동.

 

★ 문제 5 

  • 아래와 같은 문서를 생성하시오.
  • 조건
    • 체크박스를 사용해 텍스트 박스를 제어하시오.
    • 각각의 텍스트 박스의 입력/잠금 상태를 제어하시오.
    • 체크박스 : 텍스트 박스를 읽기 전용으로 만든다.(readonly)
    • 입력 후 엔터를 치면 자동으로 잠금 상태가 된다.
    • 텍스트 박스를 더블클릭하면 입력 상태가 된다.

 

■ HTML 코드

<h2>입력하기</h2>

<table id="tbl" class="table">
    <tr>
        <th>번호</th>
        <th>입력</th>
        <th>잠금</th>
    </tr>
    <tr>
        <td>1</td>
        <td><input type="text" name="txt" class="txt" data-no="0"></td>
        <td><input type="checkbox" name="cb" class="cb" data-no="0"></td>
    </tr>
    <tr>
        <td>2</td>
        <td><input type="text" name="txt" class="txt" data-no="1"></td>
        <td><input type="checkbox" name="cb" class="cb" data-no="1"></td>
    </tr>
    <tr>
        <td>3</td>
        <td><input type="text" name="txt" class="txt" data-no="2"></td>
        <td><input type="checkbox" name="cb" class="cb" data-no="2"></td>
    </tr>
    <tr>
        <td>4</td>
        <td><input type="text" name="txt" class="txt" data-no="3"></td>
        <td><input type="checkbox" name="cb" class="cb" data-no="3"></td>
    </tr>
    <tr>
        <td>5</td>
        <td><input type="text" name="txt" class="txt" data-no="4"></td>
        <td><input type="checkbox" name="cb" class="cb" data-no="4"></td>
    </tr>
    <tr>
        <td>6</td>
        <td><input type="text" name="txt" class="txt" data-no="5"></td>
        <td><input type="checkbox" name="cb" class="cb" data-no="5"></td>
    </tr>
    <tr>
        <td>7</td>
        <td><input type="text" name="txt" class="txt" data-no="6"></td>
        <td><input type="checkbox" name="cb" class="cb" data-no="6"></td>
    </tr>
    <tr>
        <td>8</td>
        <td><input type="text" name="txt" class="txt" data-no="7"></td>
        <td><input type="checkbox" name="cb" class="cb" data-no="7"></td>
    </tr>
    <tr>
        <td>9</td>
        <td><input type="text" name="txt" class="txt" data-no="8"></td>
        <td><input type="checkbox" name="cb" class="cb" data-no="8"></td>
    </tr>
    <tr>
        <td>10</td>
        <td><input type="text" name="txt" class="txt" data-no="9"></td>
        <td><input type="checkbox" name="cb" class="cb" data-no="9"></td>
    </tr>
</table>

 

■ CSS 코드

<style>
    #tbl {
        width: 600px;
    }
    #tbl th {
        font-size: 1em;
        padding: 7px;
    }
    #tbl td {
        text-align: center;
    }
    #tbl .txt {
        width: 450px;
        border: 1px solid #999;
        background-color: white;
        padding: 3px;
    }
    #tbl .txt:read-only {
        cursor: not-allowed;
        background-color: #eee;
    }
</style>

 

■ JavaScript

<script>

    var txt = document.all.txt;
    var cb = document.all.cb;

    for (var i=0; i<cb.length; i++) {
        cb[i].onchange = function() {
            if (event.srcElement.checked) {
                txt[event.srcElement.dataset["no"]].readOnly = true;
            } else {
                txt[event.srcElement.dataset["no"]].readOnly = false;
            }
        };

        txt[i].onkeydown = function() {
            if (event.keyCode == 13) {
                cb[event.srcElement.dataset["no"]].click();
            }
        };

        txt[i].ondblclick = function() {
            cb[event.srcElement.dataset["no"]].click();
        };
    }

</script>

 

■ 실행 결과

잠금 기능을 통한, 중요한 텍스트 지우는 것을 막기!

728x90
저작자표시 비영리 변경금지 (새창열림)

'웹페이지' 카테고리의 다른 글

JAVASCRIPT STEP 28 - Variable  (0) 2023.04.25
JAVASCRIPT STEP 27 - Timer  (0) 2023.04.25
JAVASCRIPT STEP 25 - FORM2  (0) 2023.04.25
JAVASCRIPT STEP 24 - FORM  (0) 2023.04.24
JAVASCRIPT STEP 23 - 응용 예제2  (0) 2023.04.24
'웹페이지' 카테고리의 다른 글
  • JAVASCRIPT STEP 28 - Variable
  • JAVASCRIPT STEP 27 - Timer
  • JAVASCRIPT STEP 25 - FORM2
  • JAVASCRIPT STEP 24 - FORM
IT의 큰손
IT의 큰손
IT계의 큰손이 되고 싶은 개린이의 Log 일지
Developer Story HouseIT계의 큰손이 되고 싶은 개린이의 Log 일지
IT의 큰손
Developer Story House
IT의 큰손
전체
오늘
어제
  • 분류 전체보기 (457)
    • 정보처리기사 필기 (18)
    • 정보처리기사 실기 (12)
    • 정보처리기사 통합 QUIZ (12)
    • 빅데이터 (11)
    • 안드로이드 (11)
    • 웹페이지 (108)
    • 자바 (49)
    • SQLD (3)
    • 백준 알고리즘 (76)
    • 데이터베이스 (41)
    • 깃허브 (2)
    • Library (14)
    • Server (31)
    • 크롤링&스크래핑 (3)
    • Spring (23)
    • Vue.js (13)
    • React (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Developer Stroy House

인기 글

태그

  • 자바
  • 알고리즘
  • 정보처리기사
  • 웹개발자
  • ajax
  • DBA
  • IT자격증공부
  • 백준
  • React
  • it
  • jsp
  • IT자격증
  • java
  • 프론트엔드
  • DB
  • 앱개발자
  • 웹개발
  • 개발블로그
  • 백엔드
  • 웹페이지
  • 코딩테스트
  • css
  • IT개발자
  • 데이터베이스
  • 정보보안전문가
  • JavaScript
  • 개발자
  • 정보처리기사필기
  • jquery
  • html

최근 댓글

최근 글

Designed By hELLO
IT의 큰손
JAVASCRIPT STEP 26 - FORM 예제
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.