/* 비밀번호 확인 */

        var jsPwdCheck = function() {

            

            var empPwd = $("#empPwd").val();

            var empPwd2 = $("#empPwd").val();

            

            // 비밀번호 정규식 체크

            var regEmpPwd = /^.*(?=^.{8,15}$)(?=.*\d)(?=.*[a-zA-Z])(?=.*[~,!,@,#,$,*,(,),=,+,_,.,|]).*$/;

            

            if( regEmpPwd.test(empPwd) == false ) {

                alert('8 ~15자의 영문/숫자/특수문자 혼용만 가능합니다.');

                $("#empPwd").val('');

                $("#empPwd").focus();

                return false;

            }

            

        };

구지 일일이 설명을 다하기는 시간이 오래 걸릴듯, 다른거 할게 많아서... 소스를 첨부하니 이해하시길


<script type="text/javascript">
   
   var Browser = { a : navigator.userAgent.toLowerCase() }
   
   Browser = {
           ie : /*@cc_on true || @*/ false,
           ie6 : Browser.a.indexOf('msie 6') != -1,
           ie7 : Browser.a.indexOf('msie 7') != -1,
           ie8 : Browser.a.indexOf('msie 8') != -1,
           opera : !!window.opera,
           safari : Browser.a.indexOf('safari') != -1,
           safari3 : Browser.a.indexOf('applewebkit/5') != -1,
           mac : Browser.a.indexOf('mac') != -1,
           chrome : Browser.a.indexOf('chrome') != -1,
           firefox : Browser.a.indexOf('firefox') != -1
       }
   
   
   // 기본 Zoom
   var nowZoom = 100;
   // 최대 Zoom
   var maxZoom = 200;
   // 최소 Zoom
   var minZoom = 80;
   
   // 화면크기 확대
   var jsBrowseSizeUp = function() {
       
       if( Browser.chrome ) {
           if( nowZoom < maxZoom ) {
               nowZoom += 10; // 10 = 25%씩 증가
               document.body.style.zoom = nowZoom + "%";
           }
           else{
               alert('최대 확대입니다.');
           }
       }
       else if( Browser.opera ) {
           alert('오페라는 화면크기 기능을 지원하지 않습니다.\n브라우저 내의 확대/축소 기능을 이용하시기 바랍니다.');
       }
       else if( Browser.safari || Browser.safari3 || Browser.mac ) {
           alert('사파리, 맥은 화면크기 기능을 지원하지 않습니다.\n브라우저 내의 확대/축소 기능을 이용하시기 바랍니다.');
       }
       else if( Browser.firefox ) {
           alert('파이어폭스는 화면크기 기능을 지원하지 않습니다.\n브라우저 내의 확대/축소 기능을 이용하시기 바랍니다.');
       }
       else {
           if( nowZoom < maxZoom ) {
               nowZoom += 10; //10 = 25%씩 증가
               document.body.style.position = "relative";
               document.body.style.zoom = nowZoom + "%";
           }
           else{
               alert('최대 확대입니다.');
           }
       }
   };
   
   // 화면크기 축소
   var jsBrowseSizeDown = function() {
       
       if( Browser.chrome ) {
           if( nowZoom < maxZoom ) {
               nowZoom -= 10; // 10 = 25%씩 증가
               document.body.style.zoom = nowZoom + "%";
           }
           else{
               alert('최대 확대입니다.');
           }
       }
       else if( Browser.opera ) {
           alert('오페라는 화면크기 기능을 지원하지 않습니다.\n브라우저 내의 확대/축소 기능을 이용하시기 바랍니다.');
       }
       else if( Browser.safari || Browser.safari3 || Browser.mac  ) {
           alert('사파리, 맥은 화면크기 기능을 지원하지 않습니다.\n브라우저 내의 확대/축소 기능을 이용하시기 바랍니다.');
       }
       else if( Browser.firefox ) {
           alert('파이어폭스는 화면크기 기능을 지원하지 않습니다.\n브라우저 내의 확대/축소 기능을 이용하시기 바랍니다.');
       }
       else {
           if( nowZoom < maxZoom ) {
               nowZoom -= 10; //10 = 25%씩 증가
               document.body.style.position = "relative";
               document.body.style.zoom = nowZoom + "%";
           }
           else{
               alert('최대 확대입니다.');
           }
       }
   };

   // 화면크기 원래대로(100%)
   var jsBrowseSizeDefault = function() {
       
       nowZoom = 100;
       document.body.style.zoom = nowZoom + "%";
   };

</script>


화면 조정을 하고자하는 곳에

확대 onclick="jsBrowseSizeUp()"

축소 onclick="jsBrowseSizeDown();" 

기본 onclick="jsBrowseSizeDefault();" 이벤트룰 주면 완성!


사파리 & 파이어폭스 & 오페라는 위의 기능으로 불가능

구글링 결과 css transform 을 이용하면 가능하다고 하는데... 현재 개발중인 프로젝트 메뉴가 이미지로 구성이 많이 되어 있어서 transform 으로 확대를 하면 화면깨짐 현상이 나타나서 결국엔 위의 스크립트와 같이 기능지원을 하지 않았다.


나중에 시간날때  css transform 공부좀 하자..^_^

참고한 사이트 : http://angeleyes.tistory.com/259#.Uh6Zsz9mKLI  (css Transform)

=================================================================

키 | 코드(숫자)

=================================================================

←(백스패이스) = 8

TAB = 9

ENTER = 13

SHIFT = 16

CTRL = 17

ALT = 18

PAUSEBREAK = 19

CAPSLOOK = 20

한/영 = 21

한자 = 25

ESC = 27

스패이스 = 32

PAGEUP = 33

PAGEDN = 34

END = 35

HOME =36

←(중간) = 37

↑(중간) = 38

→(중간) = 39

↓(중간) = 40

INSERT = 45

DELETE = 46

0 = 48

1 = 49

2 = 50

3 = 51

4 = 52

5 = 53

6 = 54

7 = 55

8 = 56

9 = 57

A = 65

B = 66

C = 67

D = 68

E = 69

F = 70

G = 71

H = 72

I = 73

J = 74

K = 75

L = 76

M = 77

N = 78

O = 79

P = 80

Q = 81

R = 82

S = 83

T = 84

U = 85

V = 86

W = 87

X = 88

Y = 89

Z = 90

윈도우(왼쪽) = 91

윈도우(오른쪽) = 92

기능키 = 93

0(오른쪽) = 96

1(오른쪽) = 97

2(오른쪽) = 98

3(오른쪽) = 99

4(오른쪽) = 100

5(오른쪽) = 101

6(오른쪽) = 102

7(오른쪽) = 103

8(오른쪽) = 104

9(오른쪽) = 105


.(오른쪽) = 110

/(오른쪽) = 111

*(오른쪽) = 106

+(오른쪽) = 107

-(오른쪽) = 109

F1 = 112

F2 = 113

F3 = 114

F4 = 115

F5 = 116

F6 = 117

F7 = 118

F8 = 119

F9 = 120

F10 = 121

F11 = 122

F12 = 123

NUMLOCK = 144

SCROLLLOCK = 145

=(중간) = 187

-(중간) = 189

`(왼쪽콤마) = 192

\(중간) = 220

어떤 값이 예약 값인 NaN(숫자 아님)인지 여부를 나타내는 부울 값을 반환합니다.
isNaN(numValue) 

Number 형식으로 변환된 값이 NaN이면 true이고, 그렇지 않으면 false입니다.

필수 numValueNaN에 대해 테스트할 값입니다.

이 메서드는 보통 parseIntparseFloat 메서드의 반환 값 테스트에 사용합니다.

다른 방법으로, NaN 또는 다른 값을 포함하는 변수를 자신과 비교할 수도 있습니다. 비교 결과 값이 서로 같지 않으면 NaN입니다. 자신과 같지 않은 값은 NaN뿐이기 때문입니다.

지원되는 문서 모드: Quirks, Internet Explorer 6 표준, Internet Explorer 7 표준, Internet Explorer 8 표준, Internet Explorer 9 표준, Internet Explorer 10 표준. Windows 스토어 응용 프로그램에서도 지원됩니다. 버전 정보를 참조하십시오.

적용 대상: Global 개체(JavaScript)

JavaScript
// Returns false.
isNaN(100);

// Returns false.
isNaN("100");

// Returns true.
isNaN("ABC");

// Returns true.
isNaN("10C");

// Returns true.
isNaN("abc123");

// Returns true.
isNaN(Math.sqrt(-1));    

 

결론, 숫자값이면 'false' 이고, 문자열이면 'true' 반환 

 

- GoogleMap API 오버레이 & 마커 표시

1. 오버레이 : 지도상의 위치정보 연결객체

2. 마커 : 지도상의 위치 표시(아이콘)

- 사용 예)

<!DOCTYPE html>
<html DIR="LTR">
<head>
<title>Google Maps JavaScript API v3 예제: 오버레이 제거</title>
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
    var map;
  /* 클릭한 마커의 ID, 좌표를 관리할 배열 생성 */
  var markersArray = [];

  /* 초기화 */
  function initialize() {
    /* 초기화 나타날 지도 센터의 좌표 */
    var haightAshbury = new google.maps.LatLng(37.7699298, -122.4469157);
    var mapOptions = {
      zoom: 12,
      center: haightAshbury,
      /* 출력한 지도 타입 */
      mapTypeId: google.maps.MapTypeId.TERRAIN
  };

    /* 맵 생성 */
    map = new google.maps.Map(document.getElementById("map_canvas"),
        mapOptions);
   
    /* 사용자의 이벤트처리할 리스너 */
    google.maps.event.addListener(map, 'click', function(event) {
      addMarker(event.latLng);
    });
  }
 
  function addMarker(location) {
    marker = new google.maps.Marker({
      position: location,
      map: map
  });
    /* 맵의 입력 */
    markersArray.push(marker);
  }

  // Removes the overlays from the map, but keeps them in the array
  /* 마커 지도(화면단)에서 지우기(실제 정보는 존재) */
  function clearOverlays() {
    if (markersArray) {
      for (i in markersArray) {
        markersArray[i].setMap(null);
      }
    }
  }

  // Shows any overlays currently in the array
  function showOverlays() {
    if (markersArray) {
      for (i in markersArray) {
        markersArray[i].setMap(map);
      }
    }
  }

  // Deletes all markers in the array by removing references to them
  /* 마커정보 완전 삭제 */
  function deleteOverlays() {
    if (markersArray) {
        for (i in markersArray) {
        /* 마케지우고 */
        markersArray[i].setMap(null);
    }
      /* 마커정보 배열 지우기 */
      markersArray.length = 0;
    }
  }
</script>
</head>
<body onload="initialize();">
  <div>
    <input onclick="clearOverlays();" type=button value="오버레이 지우기" />
    <input onclick="showOverlays();" type=button value="오버레이 모두 표시" />
    <input onclick="deleteOverlays();" type=button value="오버레이 삭제" />
  </div>
  <div id="map_canvas" style="top:30px;width:600px; height:500px"></div>
</body>
</html>

- 학교(서디대) 오픈 API 기초와 활용 수업 중 GooleMap API 사용법 

사이트 들어가도 친절하게 예제로 다 나와있으나 수업한거니 기재하는게 좋을 것 같다고 생각한다.

https://developers.google.com/maps/documentation/javascript/?hl=ko-KR

Google Maps JavaScript API v3


<!DOCTYPE html>
<html DIR="LTR">
<head>
<!--  meta : viewport 지도가 화면전체에 표시하고 사용자가 크기를 조정할수 없도록 지정함. -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"  />
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" />
<title>Google Maps JavaScript API v3 예제: 간단한 지도</title>
<!-- 센서매개변수 False (데스크탑 사용시 GPS 로케이션 이 없으므로 -->
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
    function initialize() {
    // 사용자 위도/경도 지정(google.maps.LatLng)
        var myLatlng = new google.maps.LatLng(37.397, 127.644);
    // 지도 초기화(mpOptions)
        var myOptions = {
      // 줌 정도
        zoom: 4,
      // 위치(위도/경로)
        center: myLatlng,
      // 기본UI 를 사용하지 않도록설정(제거시 기본UI)
        disableDefaultUI: true,
      // 제공되는 컨트롤 추가( 컨트롤 표시 : True | 숨기기 : False )
        panControl: false,
        zoomControl: false,
        scaleControl: true,
      // 지도 타입설정
        mapTypeId: google.maps.MapTypeId.ROADMAP
      /*
        ROADMAP - 일반적인 기본 2D 타입의 Google 지도를 표시
        SATELLITC - 사진타일을 표시
        HYBRID - 사진타일과 도로, 도시 등 주요 지형지물을 담고있는 타일 레이어를 함께 표시
        TERRAIN - 고도 및 수경(산, 강등)을 표시하기 위한 물리적 기복타일을 표시
      */
    }
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  }
</script>
</head>
<!--  HTML 페이지가 로딩된 후 onload 이벤트를 받은 후에 Map 객체 생성하여 화면에 보여짐 -->
<body onload="initialize()">
  <div id="map_canvas"></div>
</body>
</html>

 

 

위에는 기본 GooGoleMap 소스 이고 화면에서 지도 설정인 Control 설정 부분

※ 본문 <body> 는 모두 동일하니 <script></script> 부분만 설명


<script type="text/javascript">
  function initialize() {
    var myOptions = {
        zoom: 4,
      /* 좌표 설정 */
      center: new google.maps.LatLng(-33, 151),
      /* Control 활성화 */
      mapTypeControl: true,
      /* Control 속성 */
      mapTypeControlOptions: {
        style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
    },
      /* 확대 축소 활성화 */
      zoomControl: true,
      zoomControlOptions: {
        /* ZoomControl 미니로 설정 */
        style: google.maps.ZoomControlStyle.SMALL
    },
      /* 지도 종류설정 */
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    var map = new google.maps.Map(document.getElementById("map_canvas"),
                                  myOptions);                         
  }

Control 설정을 하기위해서 해당 Control 활성화를 준다음 맵으로 설정부분을 입력하다.

 

사용자가 직접 해당 Control 의 위치를 변경 할 수 도 있다.

-    일단 위치설명

 

 

이 사진을 부고 직접 원하는 위치에 놓으면 된다.

-    사용 예


  function initialize() {
    var myOptions = {
      zoom: 12,
      center: new google.maps.LatLng(-28.643387, 153.612224),
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      /* Control 사용을 위한 활성화 */
      mapTypeControl: true,
      /* 해당 Control 변경 옵션 설정 */
      mapTypeControlOptions: {
          style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
          position: google.maps.ControlPosition.BOTTOM_CENTER
      },
      panControl: true,
      panControlOptions: {
          position: google.maps.ControlPosition.TOP_RIGHT
      },
      zoomControl: true,
      zoomControlOptions: {
          style: google.maps.ZoomControlStyle.LARGE,
          position: google.maps.ControlPosition.LEFT_CENTER
      },
      scaleControl: true,
      scaleControlOptions: {
          position: google.maps.ControlPosition.TOP_LEFT
      },
      streetViewControl: true,
      streetViewControlOptions: {
          position: google.maps.ControlPosition.LEFT_TOP
      }
    }
    var map = new google.maps.Map(document.getElementById("map_canvas"),
                                  myOptions);                         
  }

위와 똑같이 무든 Control 부분을 수정하기위해서 우선 해당 Control 활성화를 해준다음 작업을 해야한다.


- JAVASCRIPT 가변인자함수 만들기.

  자변인자 함수를 만들려면 함수 내부에 arguments 변수를 넣어야 한다. (※ 함수의 매개변수의 값은 아무것도 읍다.)

  예) 합을 구하는 가변인자 함수
    <script>
        function sumAll() {
            var sum = 0;
            for(var i=0; i<arguments.length; i++){
                sum += arguments[i];
                }
                return sum;
        }
        alert(sumAll(1, 3, 4, 5, 1, 5, 6));
    </script>



     만약 매개변수의 개수가 다를때 마다 다른것을 리턴하는 함수를 만들고 싶다면 ?

     예) arguments 요소의 갯수에 따라 조건을 설정하면 된다.

    <script>
        function 함수이름() {
            var length = arguments.length;
                // 조건설정

    if( length = 0 ) {

}

else if( length = 1 ) {

}

else {

}

        }
        alert(sumAll(1, 3, 4, 5, 1, 5, 6));
    </script>


    자바스크립트 공부는 생각해보면 처음인듯 싶다...

        몰랐던 함수 2개
        prompt(); -> 사용자의 입력 값을 받아옴.(return var)
        confirm(); -> 사용자에게 true & false 값 받아옴(return boolean)

<script>
//screen.width  : 현재 운영체제의 너비
//screen.height : 현재 운영체제의 높이
w = 640;    //팝업창의 너비
h = 510;    //팝업창의 높이

//중앙위치 구해오기
LeftPosition=(screen.width-w)/2;
TopPosition=(screen.height-h)/2;

//팝업 호출
function popup_open() {  
    window.open(
        팝업url,
        "팝업창이름",
        "width="+w+",height="+h+",top="+TopPosition+",left="+LeftPosition+", scrollbars=no");
}
</script>



- 부록

window.open()의 모든 옵션들에 대한 이해

  • name = window.open( "창에 보여줄 파일/홈페이지의 이름/주소", "창의 이름", "옵션" )

window.open() 메소드에 전달할 수 있는 파라미터 중 첫 번째는 보여줄 내용이고, 두 번째는 target으로서의 창 이름이며 세 번째가 창의 위치와 크기 및 모양을 지정할 수 있는 옵션 그룹이다. 그리고 window.open() 메소드가 되돌리는 값을 name에 담았다면 그 name은 그 창(자식 창)을 연 opener(부모 창)에서 자식 창을 컨트롤할 수 있는 이름이 된다.

다음과 같이 창을 열어보자.

<input type=button value="창" onClick= "window.open( 'small.htm','new','left=300, top=300, width=400, height=300, toolbar=no, location=yes, directories=no, status=no, menubar=no, scrollbars=yes, copyhistory=yes, resizable=no')">

<INPUT>

참고로 가끔 보면 옵션들 사이에 빈칸이 있으면 안 된다고 말하는데, 이것은 넷스케이프에 관한 설명인 듯하다. 익스플로러에서도 줄바꿈(리턴)이 있으면 안 된다. 하드 리턴(문단 바꿈, <p>)은 물론이고 소프르 리턴(줄만 바꿈, <br>)도 끼어들면 결코 안 될 것이다.

창 열기 옵션은 상당히 많은데, 알아 두면 좋지만 다 외우기는 쉽지 않다. 모든 옵션을 한 번 보되, 나름대로 그룹화하여 소개한다. 이 내용은 1차적으로 http://pl.changwon.ac.kr/~chowing/js/win_open.html을 참고한 것이다. 넷스케이프 전용인지 익스플로러 전용인지 등을 확인하는 데 도움이 될 참고 사이트는 http://www.kbtech777.co.kr/lecture/webprog/jscript/javalibrary.htm(Javascript 속성 라이브러리) 등.

위치

screenX / left(ie전용) : 왼쪽 좌표, screenY / top(ie전용) : 위쪽 좌표

크기

width : 너비, height : 높이

resizable(크기변경 허용 여부)

innerWidth, innerHeight, outerWd\idth, outerHeight(넷스케이프 전용?)

다른 창과의 관계

dependent(opener가 닫히면 함께 닫힘)

alwaysLowered(항상 깔림), alwaysRaised(항상 드러남)

z-lock(yes로 설정하면, 활성화되어도/포커스가 주어져도 다른 창 위로 떠오르지는 못하게 막는다)

기타 옵션들

hotkeys( no로 지정하면 menubar 없이는 (security 및 quit) 핫키를 제외한 어떤 핫키도 사용할 수 없게 된다 )

directories(디렉터리 버튼들)

location(로케이션 엔트리)

menubar(File, Edit, View, 기타의 메뉴바)

scrollbars(필요할 때 나타날 스크롤바)

status(아래쪽 상태바)

titlebar(위쪽 타이틀바)

toolbar(Back, Forward, 기타의 툴바)

IE4(이상)에서만 사용 가능한 옵션들

channelmode(채널바가 있는 창)

fullscreen(전체 화면 차지)

left(screenX), top(screenY)

위와 같은 방식으로 정리하면 저절로 외워지게 하는 데 도움이 되지 않을까 생각한다. 정리한 직후에 남는 궁금증은 z-lock과 alwaysLowered는 동일한 옵션인가? 하는 점이다. 실습이 최상의 선택이라고 믿으므로 차근히 테스트해 보자.

먼저, 아무 옵션도  주지 말고 창을 열어 보자.

<input type=button value="창" onClick= "window.open( 'small.htm','new','')">

 

타이틀바, 메뉴바, 툴바, 로케이션 엔트리, 스크롤바, 상태바 등 아무튼 얼른 보아서 모든 옵션들이 다 yes로 설정되어 나타나는 것 같다. 이번에는 크기와 위치만을 지정하여 창을 열어 보자.

<input type=button value="창" onClick= "window.open( 'small.htm','new','left=300, top=300, width=400, height=300')">

 

이번에는 타이틀바만 나타나고, 다른 모든 것이 no로 설정된 모양이다(최대화 버튼이 죽어 있다). resizable로 no인 것이 분명하다. 옵션 중에 하나라도 설정하면 타이틀바와 hotkeys만 yes로 되고 나머지는 모든 no로 디폴트 설정되는 것이라고 이해하면 될 것 같다.

다음으로, resizable, resizable=yes 또는 resizable=1을 크기, 위치 지정과 함께 주어 보자.

<input type=button value="창" onClick= "window.open( 'small.htm','new','left=300, top=300, width=400, height=300, resizable=1')">

 

최대화 버튼이 살아나고, 가장자리에 마우스를 대면 리사이즈 화살표 모양으로 변한다. 이번에는 디렉터리 버튼들을 나타내어 보자.

<input type=button value="창" onClick= "window.open( 'small.htm','new','left=300, top=300, width=400, height=300, resizable, directories')">

 

타이틀바 아래에 '연결, 링크 사용자 정의, 인터넷 시작' 등 줄이 나타나고 그 줄 오른쪽의 >> 표시를 클릭하면 채널 가이든 등 리스트가 드롭다운된다. 이번에는 로케이션 엔트리를 나타내어 보자.

<input type=button value="창" onClick= "window.open( 'small.htm','new','left=300, top=300, width=400, height=300, resizable, directories, location')">

 

이번에는 디렉터리 버튼들이 오른쪽으로 밀려 나가고, 같은 줄 왼쪽에 '주소'라는 표시와 로케이션 드롭다운이 심어져 있다.

<input type=button value="창" onClick= "window.open( 'small.htm','new','left=300, top=300, width=400, height=300, resizable, directories, location, menubar')">

 

타이틀바와 로케이션/디렉터리 중간에 메뉴바 줄이 삽입된다.

<input type=button value="창" onClick= "window.open( 'small.htm','new','left=300, top=300, width=400, height=300, resizable, directories, location, menubar, scrollbars')">

 

스크롤바를 지정하면, 스크롤할 필요가 없는 경우에도 오른쪽의 스크롤바는 여전히 나타난다.

<input type=button value="창" onClick= "window.open( 'small.htm','new','left=300, top=300, width=400, height=300, resizable, directories, location, menubar, scrollbars, toolbar')">

 

타이틀바, 메뉴바 아래에 뒤로/앞으로/중지/새로고침 등의 툴바가 삽입된다.

<input type=button value="창" onClick= "window.open( 'small.htm','new','left=300, top=300, width=400, height=300, resizable, directories, location, menubar, scrollbars, toolbar, status')">

 

아래쪽 상태바까지 모든 것이 다 나타난다.


+ Recent posts