원출처 : http://jsfiddle.net/crucify/6xx73/3/










Posted by 회사원Z
:


원출처 & 예제 : http://www.javascriptkit.com/script/script2/enforceform.shtml





Enter your hobbies (<50 characters)



Enter your postal code (<6 characters)

data-maxsize="N" : 제한할 글자수를 입력

data-output="ID값" : 몇 자가 입력되었는지 실시간으로 표시해주고 싶을 때 빈 div나 span을 만든 후 해당 엘리먼트의 ID값을 적어주면 그 쪽에서 정보를 보여준다.



Posted by 회사원Z
:
Function getgugun(scode)
	response.write ""
	getgugun = ""
End Function


무식해 보이지만 이런 펑션을 만들었다.

지역코드가 js 배열로 되어있고 메인 페이지가 ASP일 때 이런식으로 

해당하는 지역코드값으로 지역이름 가져와서 ASP 변수에 저장해주었다.

Posted by 회사원Z
:


찾기를 원하는 장소를 검색 후
주소창에 javascript:void(prompt('',gApplication.getMap().getCenter())); 를 타이핑.
Posted by 회사원Z
:

var globalGeocoder = new google.maps.Geocoder(); <!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<title>TownStory: Google Map</title>
<style type="text/css">
  html { height: 100% }
  body { height: 100%; margin: 0px; padding: 0px; font-size: 9pt; }

    div { float:left; }

    #map_canvas { width: 800px; height: 500px }

    #control {  }

    input { font-size: 9pt; }
</style>
<script type="text/javascript"
    src="http://maps.google.com/maps/api/js?sensor=false&region=KR">
</script>
<script type="text/javascript">
var StreetViewPanorama = new function(){}

var globalMap;
var globalMarker;
var globalGeocoder;

// 맵 초기화
function initialize(x, y) {
     // 입력된 좌표가 없으면 기본좌표를 역삼동으로 설정.
    if(x==0){ x=37.50075507977441; }
    if(y==0){ y=127.03690767288208; }

    globalGeocoder = new google.maps.Geocoder();

    var latlng = new google.maps.LatLng(x, y);

    var myOptions = {
        zoom: 16,

        //disableDoubleClickZoom:false,
        center: latlng,
        
        navigationControl: false,    // 눈금자 형태로 스케일 조절하는 컨트롤 활성화 선택.
        navigationControlOptions: {
            position: google.maps.ControlPosition.TOP_RIGHT,
            style: google.maps.NavigationControlStyle.DEFAULT // ANDROID, DEFAULT, SMALL, ZOOM_PAN
        },
        
        streetViewControl: false,

        scaleControl: false,    // 지도 축적 보여줄 것인지.
        //scaleControlOptions: { position: google.maps.ControlPosition.TOP_RIGHT },
        
        mapTypeControl: false, // 지도,위성,하이브리드 등등 선택 컨트롤 보여줄 것인지
        mapTypeId: google.maps.MapTypeId.ROADMAP  // HYBRID, ROADMAP, SATELLITE, TERRAIN
    };

    globalMap = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    google.maps.event.addListener(globalMap, 'dragend', function(){    // 드래그시 이벤트 추가
        showMapPos();
        showMapAddr();
    });
    google.maps.event.addListener(globalMap, 'click', function(event){        // 지도클릭시 마커이동
        moveMarker(event.latLng);
    });
}
 
// 맵 드래그할 때 맵 중앙 좌표 보여주기
function showMapPos(){
    var pos=globalMap.getCenter();

    //alert(pos.lat()+"/"+pos.lng());
    //return {x:pos.lat(), y:pos.lng()};

    document.getElementById("centerX").value = pos.lat();
    document.getElementById("centerY").value = pos.lng();
}

// 드래그할 때 맵 중앙 좌표의 주소
function showMapAddr(){
    globalGeocoder.geocode( { 'location': globalMap.getCenter()}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            /*
            var str="";
            for(var i=0; i<results[0].address_components.length; i++){
                str += "/"+results[0].address_components[0].long_name
            }
            document.getElementById("txtAddress").innerHTML=str;

            document.getElementById("txtAddress").innerHTML=results[0].address_components[0].types;
            */

            
            var str="";
            for(var i=3; i>=0; i--){
                str += " "+results[0].address_components[i].short_name;
            }
            document.getElementById("txtAddress").innerHTML=str;
            //document.getElementById("txtAddress").innerHTML=results[0].address_components[0].long_name;
            

        } else {
            alert("Geocode was not successful for the following reason: " + status);
        }
    });
}

// 맵 중앙에 마크찍기
function setMark(){
    var myOptions = {
        position: globalMap.getCenter(),
        draggable: true,
        map: globalMap,
        //icon: "http://sstatic.naver.net/search/img2/ico_bal_a.gif", // 아이콘 설정할 때
        visible: true
    };

    globalMarker = new google.maps.Marker(myOptions);
}

// 마크 삭제하기
function removeMark(){
    globalMarker.setOptions({
        map: null,
        visible: false
    });
    globalMarker = null;
}

// 마크좌표 가져오기
function getMarkPos(){
    var pos=globalMarker.getPosition();

    //alert(pos.lat()+"/"+pos.lng());
    //return {x:pos.lat(), y:pos.lng()};

    document.getElementById("markerX").value = pos.lat();
    document.getElementById("markerY").value = pos.lng();
}

// 특정좌표로 이동하기
function setMapByCoord(x, y){
    var loc = new google.maps.LatLng(x, y);

    globalMap.setCenter(loc);
}

// 주소값으로 찾기
function codeAddress() {
    var address = document.getElementById("address").value;
    if(address=='검색할 주소를 입력하십시오.' || address==''){
        alert('검색할 주소를 입력하십시오.');
        document.getElementById("address").value='';
        document.getElementById("address").focus();
        return;
    }

    globalGeocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            globalMap.setCenter(results[0].geometry.location);

            //var marker = new google.maps.Marker({
            globalMarker = new google.maps.Marker({
                map: globalMap,
                position: results[0].geometry.location,
                draggable: true
            });
        } else {
            alert("Geocode was not successful for the following reason: " + status);
        }
    });
}

// 정보창 마크 찍기
function setInfoMark(){
    //var html = "<div><a href='http://www.findall.co.kr' target='_blank'>www.findall.co.kr</a></div>";
    //var html = "<div><iframe src='http://www.findall.co.kr' style='width:300px;height:120px;'></iframe></div>";

    var html = "";
    html += "<div>";
    html += "    <a href='http://www.findall.co.kr' target='_blank'>";
    html += "        <img src='http://image.findall.co.kr/FANew/Topmain/summer_logo.gif' border='0'>";
    html += "    </a>";
    html += "</div>";

    var infoWin = new google.maps.InfoWindow({content: html, maxWidth:1000});
    var loc = new google.maps.LatLng(37.500061375296184,127.03099206089973);
    
    var myOptions = {
        position: loc,
        draggable: false,
        map: globalMap,
        //icon: "http://sstatic.naver.net/search/img2/ico_bal_a.gif", // 아이콘 설정할 때
        visible: true
    };

    // 마커 생성
    globalMarker = new google.maps.Marker(myOptions);

    // 마커에 이벤트리스너 추가
    google.maps.event.addListener(globalMarker, 'click', function(){
        infoWin.open(globalMap, globalMarker);
    });

    // 지도 중심좌표 이동
    globalMap.setCenter(loc);
}

// 지도 위의 마크 모두 삭제 - Refresh 말고 방법 없을까?
function clearMark(){
    var loc = globalMap.getCenter(); // 현재의 지도의 위치를 가져온다.

    globalMap = null;
    globalMarker = null;
    globalGeocoder = null;

    initialize(loc.lat(), loc.lng());
}

// 지도 클릭시 마커 이동
function moveMarker(loc){
    //alert(loc);
    globalMarker.setPosition(loc);
}
</script>
</head>
<body onload="initialize(0,0)">
  <div id="map_canvas"></div>

    <div id="control">
        <dl>
            <dt><strong>[Control]</strong></dt>
            <dd>기본좌표(x,y) : 37.50075507977441, 127.03690767288208</dd>
            <dd>&nbsp;</dd>
            <dd>맵 주소 : <span id="txtAddress"></span></dd>
            <dd>맵X좌표:&nbsp;&nbsp;&nbsp; <input type="text" id="centerX"></dd>
            <dd>맵Y좌표:&nbsp;&nbsp;&nbsp; <input type="text" id="centerY"></dd>

            <dd><hr/></dd>

            <dd>
                <input type="button" value="맵 중앙에 마크찍기" onClick="setMark();">
                <input type="button" value="마크삭제" onClick="removeMark();">
            </dd>
            <dd>
                <input type="button" value="마크좌표 보기" onClick="getMarkPos();">    <br>
                <span style="margin-left: 80px;">마크X좌표: <input type="text" id="markerX"></span> <br>
                <span style="margin-left: 80px;">마크Y좌표: <input type="text" id="markerY"></span>
            </dd>
            <dd>
                <input type="button" value="정보창 마크 찍기 - 파인드올" onClick="setInfoMark();">
            </dd>
            <dd>
                <input type="button" value="지도 위의 마크 모두 삭제" onClick="clearMark();">
            </dd>

            <dd><hr/></dd>

            <dd>
                <input type="button" value="송파구청" onClick="setMapByCoord(37.5145937754918, 127.10662364959717);">
                좌표(x,y): 37.5145937754918, 127.10662364959717
            </dd>

            <dd><hr/></dd>

            <dd>
                <input type="text" id="address" value="검색할 주소를 입력하십시오." style="width:210px;" onClick="this.value='';">
                <input type="button" value="GeoCode" onClick="codeAddress()">
            </dd>
        </td>
    </div>
</body>
</html>
Posted by 회사원Z
:
//한글포함여부
function is_han(val) { //한글이 하나라도 섞여 있으면 true를 반환
var judge = false;
for(var i = 0; i < val.length; i++) {
var chr = val.substr(i,1);
chr = escape(chr);
if (chr.charAt(1) == "u") {
chr = chr.substr(2, (chr.length - 1));
if((chr >= "3131" && chr <= "3163") || (chr >= "AC00" && chr <= "D7A3")) {
judge = true;
break;
}
}
else judge = false;
}
return judge;
}

//한글만 입력가능
function han_only(val) { //한글로만 되있으면 true를 반환 = 영어, 숫자, 특수문자가 있으면 false
var judge = false;
for(var i = 0; i < val.length; i++) {
var chr = val.substr(i,1);
chr = escape(chr);
if (chr.charAt(1) == "u") {
chr = chr.substr(2, (chr.length - 1));
if((chr >= "3131" && chr <= "3163") || (chr >= "AC00" && chr <= "D7A3")) judge = true;
}
else {
judge = false;
break;
}
}
return judge;
}

//영문만 입력확인
function eng_only(val) { //영어로만 되있으면 true를 반환 = 한글, 숫자, 특수문자가 있으면 false
var re = /^[A-Za-z]+$/g;
var rs = re.test(val);
return rs;
}

//이메일주소확인
function is_email(str) { //규정에 맞는 email 주소인지 체크
var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
return (!r1.test(str) && r2.test(str));
}

//숫자만 입력 확인
function is_number(str) {
var r = new RegExp("^[0-9]+$");
return r.test(str);
}

//전화번호 입력 확인
function is_phone(str) {
var r = new RegExp("^[0-9]{2,4}-[0-9]{2,4}-[0-9]{4,4}$");
return r.test(str);
}

//공백제거
function trim(str) { //trim()함수 구현
var newStr = str.replace(/^\s+/,"").replace(/\s+$/,"");
return newStr;
}

//엔터키처리
function enter_key(form) { //enter key를 눌렀을 때 submit
//처럼 사용한다
if (event.keyCode ==13) {
form.submit();
}

}

//날짜형식확인
function is_date(datein){ // 입력날짜의 기본값은 mm/dd/yy이고 다른 형식이면 arguments를 줘야한다.
var type = isDate.arguments[1];
var rval = false;
var indate=datein;
if (indate.indexOf("-")!=-1) var sdate = indate.split("-");
else var sdate = indate.split("/");

if(type=="yy/mm/dd") {
var newdate = Array(3);
newdate[0] = sdate[1];
newdate[1] = sdate[2];
newdate[2] = sdate[0];
indate = newdate.join("/");
sdate = indate.split("/");
}

var chkDate=new Date(Date.parse(indate))
var cmpDate=(chkDate.getMonth()+1)+"/"+(chkDate.getDate())+"/"+(chkDate.getYear())
var indate2=(Math.abs(sdate[0]))+"/"+(Math.abs(sdate[1]))+"/"+(Math.abs(sdate[2]))

if (indate2!=cmpDate) rval = false;
else {
if (cmpDate=="NaN/NaN/NaN") rval = false;
else rval = true;
}
return rval;
}


//주민번호 확인
function is_ssn(SSN1, SSN2) {
if (SSN1.length != 6 || SSN2.length != 7) return false;

var SSN = SSN1 + SSN2;
var strA, strB, strC, strD, strE, strF, strG, strH, strI, strJ, strK, strL, strM, strN, strO;
var nCalA, nCalB, nCalC;

strA = SSN.substr(0, 1);
strB = SSN.substr(1, 1);
strC = SSN.substr(2, 1);
strD = SSN.substr(3, 1);
strE = SSN.substr(4, 1);
strF = SSN.substr(5, 1);
strG = SSN.substr(6, 1);
strH = SSN.substr(7, 1);
strI = SSN.substr(8, 1);
strJ = SSN.substr(9, 1);
strK = SSN.substr(10, 1);
strL = SSN.substr(11, 1);
strM = SSN.substr(12, 1);

// CheckSum
strO = strA*2 + strB*3 + strC*4 + strD*5 + strE*6 + strF*7 + strG*8 + strH*9 + strI*2 + strJ*3 + strK*4 + strL*5;

nCalA = eval(strO);
nCalB = nCalA % 11;
nCalC = 11 - nCalB;
nCalC = nCalC % 10;

strv = '19';
strw = SSN.substr(0, 2);
strx = SSN.substr(2, 2);
stry = SSN.substr(4, 2);

// 날짜수 체크
strz = strv + strw;
if ((strz % 4 == 0) && (strz % 100 != 0) || (strz % 400 == 0)) yunyear = 29;
else yunyear = 28;

if ((strx <= 0) || (strx > 12)) return false;
if ((strx == 1 || strx == 3 || strx == 5 || strx == 7 || strx == 8 || strx == 10 || strx == 12) && (stry > 31 || stry <= 0)) return false;
if ((strx == 4 || strx == 6 || strx == 9 || strx == 11) && (stry > 30 || stry <= 0)) return false;
if (strx == 2 && (stry > yunyear || stry <= 0)) return false;
if (!((strG == 1) || (strG == 2) || (strG == 3) || (strG ==4))) return false;
if ( nCalC != strM ) return false;

return true;
}


//입력시 값 체크 onkeydown="handlerNum()", 최대값 제한 : MaxLength="5"
function handlerNum()
{
e = window.event; //윈도우의 event를 잡는것입니다. 그냥 써주심됩니당.

//숫자열 0 ~ 9 : 48 ~ 57, 키패드 0 ~ 9 : 96 ~ 105 ,8 : backspace, 46 : delete -->키코드값을 구분합니다.
if(e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode >= 96 && e.keyCode <= 105 || e.keyCode == 8 || e.keyCode == 46)
{ //delete나 backspace는 입력이 되어야되니까..
if(e.keyCode == 48 || e.keyCode == 96)//0을 눌렀을경우
{
if(txtBox1.value == "" ) //아무것도 없는상태에서 0을 눌렀을경우
e.returnValue=false; //-->입력되지않는다.
else //다른숫자뒤에오는 0은
return; //-->입력시킨다.
}
else //0이 아닌숫자
return; //-->입력시킨다.
}
else //숫자가 아니면 넣을수 없다.
{
alert('숫자만 입력가능합니다');
e.returnValue=false;
}
}


Posted by 회사원Z
:

AJAX나 Javascript를 쓰다보면 innerHTML을 쓸일이 꼭 생긴다.

몇 줄 안되는 html 같은 경우 innerHTML로 넣으면 그럭저럭 빠르다. 티도 안나니  굳이 속도도 따질 필요도 없다. 하지만

------------------------------------

<p><strong>TEST</strong></p>
<div>TEST<span>TEST</span>TEST</div>
<em>TEST</em>

------------------------------------


이런게 1000개 2000개 이렇게 innerHTML로 만든다면 속도를 생각 안할수 없다.

한번 직접 innerHTML로 만들어 보면 속도 부분의 이슈가 꼭 생길것이다..


innerHTML로 html 을 넣는다면 대부분 이렇게 넣는다.


------------------------------------

var sHTML = "";

for(var i=0;i<1000;i++)

{

    sHTML += "<p><strong>TEST</strong></p>"
               + "<div>TEST<span>TEST</span>TEST</div>"

               + "<em>TEST</em>";

}

document.getElementById("target").innerHTML = sHTML;

------------------------------------

<div id="target"></div>

------------------------------------


만들어보면 알겠지만.. 엄청 느리다..




다른 방법이 없는가 찾다가 3가지 방법을 찾아냈다. (document.write()는 제외함)

 

1. Array에 문자열을 넣어 innerHTML 에서 Array.join("") 하여 출력하는것

------------------------------------

var aHTML = [];

for(var i=0;i<1000;i++)

{

    aHTML.push("<p><strong>TEST</strong></p><div>TEST<span>TEST</span>TEST</div><em>TEST</em>");

}

document.getElementById("target").innerHTML = aHTML.join("");

------------------------------------

 

 

2. DOM을 가지고 document.createElement() 하여 appendChild() 하는것

------------------------------------

var oParent = document.getElementById("target");
var oClone = oParent.cloneNode(false);
for (var i=0; i<1000; i++) {
 // 엘리멘트 만들고 텍스트룰 붙혀 넣고 oClone의 자식으로 추가 시킴
}
oParent.parentNode.replaceChild(oClone, oParent);

------------------------------------

 

 

3. DOM을 가지고 document.createDocumentFragment()로 만드는것

------------------------------------

var oParent = document.getElementById("target");
var oClone = oParent.cloneNode(false);
var oTemplate = document.createDocumentFragment();
/*
HTML구조를 엘리멘트형태로 생성하고 삽입한다
만든 구조를 현재 아이템인 oTemplate에 추가한다
*/

var oTmp = null;
for (var i=0; i<1000; i++) {
    oTmp = oTemplate.cloneNode(true);
    // oTemplate 안에 텍스트 노드를 삽입함
    oClone.appendChild(oTmp);
}
oParent.parentNode.replaceChild(oClone, oParent);

------------------------------------

 

 

이렇게 있었다.

 


아래 링크 가보면 총 4가지 방법(날 string 방법 포함한)에 대한 설명과 예제소스 속도 비교 페이지를 제공한다.

http://www.dengodekode.dk/artikler/DOM/no_innerhtml.php



테스트 해보니 여러 브라우저에서 사용하기 위해서 Array.join("") 이 제일 빠른듯 하다

Posted by 회사원Z
:

<input type=text name='sos[]' onchange='nowindex(this)'>
<input type=text name='sos[]'>
<input type=text name='sos[]'>
<input type=text name='sos[]'>
<input type=text name='sos[]'>

<script>
funciton nowindex(obj){

obj.index()<---??????????

}
</script>


 

답)

------------------------------

var tc=document.getElementsByName(obj.name);
for(var i=0;i<tc.length;i++){
    if(tc[i].sourceIndex==obj.sourceIndex){
        var j=i;
    }
}

alert(j);

------------------------------

sourceIndex는 IE전용입니다.
if(tc[i]===obj){
    var j=i;
    break;
}

Posted by 회사원Z
:
<script language="JavaScript">
<!--
function number2Hangeul( strNumber )
{
    strNumber = strNumber.replace(new RegExp(",", "g"), "");

    var arrayAmt = new Array("일", "이", "삼", "사", "오", "육", "칠", "팔", "구", "십");
    var arraypos = new Array("", "십", "백", "천");
    var arrayUnit = new Array("", "만", "억", "조", "경", "해", "자", "양", "구", "간", "정", "재", "극", "항하사", "아승기", "나유타", "불가사의", "무량대수");

    var pos = strNumber.length%4;                        //자리수
    var len = (strNumber.length/4).toString();

 

    if( len.indexOf(".") > 0 )
        var unit = len.substring(0, len.indexOf("."));      //단위(0:일단위, 1:만단위...)
    else
        var unit = strNumber.length/4-1;

 

    var korNumber = "";
    var op = 0;

 

    for( i=0; i<strNumber.length; i++ )
    {
        if(pos==0) pos=4;
        var num = parseInt( strNumber.substring( i, i+1 ) );
        if( num != 0 )
        {
            korNumber += arrayAmt[ num-1 ];
            korNumber += arraypos[ pos-1 ];
            op=1;
        }
        if(pos==1)
        {
            if(op==1) korNumber += arrayUnit[unit];
            unit--;
            op = 0;
        }
        pos--;
    }

    if (korNumber.length==0 || korNumber.length==null )
        return  "";
    else
        return korNumber ;
}
//-->
</script>
Posted by 회사원Z
:

/**************************************************************************
 fucntion : 공백체크
 input : elem(객체), elemCaption(타이틀)
 ouput : true(공백)
***************************************************************************/

function isEmpty(elem, elemCaption){
 if (elem.value)
  for (index = 0; index < elem.value.length; index++)
  {
   // 공백 문자(13), 수평탭(HT-9), 엔터(CR-13, LF-10)가 아닌게 하나라도 있으면...
   if (elem.value.charCodeAt(index) != 32 && elem.value.charCodeAt(index) != 9
   && elem.value.charCodeAt(index) != 13 && elem.value.charCodeAt(index) != 10)
    return false;
  }
 alert(elemCaption + "을(를) 입력하십시오.");
 elem.focus();
 return true;
}

/***************************************************************************
 fucntion : 문자열 체크
 input : elem(객체), elemCaption(타이틀), lenMin(최소길이), lenMax(최대길이),
     iFlag = 0 : 영문자, 숫자, '_', '-', '.' 만 허용(아이디 등 체크)
     iFlag = 1 : 숫자만 허용
     iFlag = 2 : 한글만 허용
 ouput : true,false
***************************************************************************/
function stringCheck(elem, elemCaption, lenMin, lenMax, iFlag)
{
 if (elem.value == ""){
  alert(elemCaption + "을(를) 입력하십시오");
  elem.focus();
  return false;
 } 
 
 if (elem.value.length < lenMin || elem.value.length > lenMax){
  if(lenMin==lenMax)
   alert(elemCaption + '은(는) ' + lenMin + '자리입니다');
  else
   alert(elemCaption + '은(는) ' + lenMin + '~' + lenMax + '자까지 가능합니다');
   
  elem.focus(); 
  return false;
 }
 
 //iFlag = 0 : 영문자, 숫자, '_', '-', '.' 만 허용(아이디 등 체크)
 if ( eval(iFlag) == 0 ){
  var str=/^[A-Za-z0-9]+$/;  
  if(!str.test(elem.value)){
   alert(elemCaption + ' 입력은 영문, 숫자만 사용할 수 있습니다');
   elem.focus();
   return false;
  }
 } 
 
 //iFlag = 1 : 숫자만 허용
 else if ( eval(iFlag) == 1){
  var str=/^[0-9]+$/;  
  if(!str.test(elem.value)){
   alert(elemCaption + ' 입력은 숫자만 사용할 수 있습니다');
   elem.focus();
   return false;
  }
 } 
 
 //iFlag = 2 : 한글만 허용
 else if( eval(iFlag) == 2){
  var str=/\s/;  
  if(str.test(elem.value)){
    alert(elemCaption + '에는 공백을 사용할 수 없습니다'); 
    elem.focus();
    return false;   
  }
 }
 
 //iFlag = 3 : 숫자, . 만 허용
 else if ( eval(iFlag) == 3){
  var str=/^[0-9.]+$/;  
  if(!str.test(elem.value)){
   alert(elemCaption + ' 입력은 숫자, .만 사용할 수 있습니다');
   elem.focus();
   return false;
  }
 }  
 
 //iFlag = 4 : 영 문
 else if ( eval(iFlag) == 4 ){
  var str=/^[A-Za-z ]+$/;  
  if(!str.test(elem.value)){
   alert(elemCaption + ' 입력은 영문만 사용할 수 있습니다');
   elem.focus();
   return false;
  }
 } 
   /*
  for(i=0; i < elem.value.length; i++){
   if (elem.value.charCodeAt(i) != 32 && (elem.value.charCodeAt(i) < 44032 || elem.value.charCodeAt(i) > 55203)){
    alert(elemCaption + ' 입력은 한글만 사용할 수 있습니다'); 
    elem.focus();
    return false;
   }
  }*/

 
 return true;
}

/***************************************************************************
 fucntion : 윈도우 열기
 input : 
 ouput : 없음
***************************************************************************/
function windowOpen( path, wintitle, iwidth, iheight, itop, ileft){
 window.open(path, wintitle, 'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,width='+iwidth+',height='+iheight+', top='+itop+', left='+ileft+'');
}

function selectSelected(ctl, val){
 for (var i=0; i<ctl.length; i++){
  if (ctl.options[i].value == val){
   ctl.selectedIndex = i;
   break;
  }
 }
}

function checkEmail(elem){
 if ( elem == null || elem.value == "" ) return;
 var str=/^(\w+(?:\.\w+)*)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
 if ( !str.test(elem.value) )
 {
  alert("E-mail 주소 형식이 올바르지 않습니다.");
  elem.focus();
  return false;
 }
 return true;
}


//숫자만
function onlyNumber()
{
 if((event.keyCode<48)||(event.keyCode>57))
      event.returnValue=false;
}

function AjaxRequest(strResponseURL,fSuccess, fError)
{
 var httpObj = new Ajax.Request
 (
  strResponseURL,
  {
    method:'post',
      parameters:Form.serialize('frm'),   
      onSuccess:fSuccess,
      onFailure:fError
  }
 );
}

function displayError(){
 alert("AjaxRequest() ERROR");
}
  
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function bluring(){
 if(event.srcElement.tagName=="A"||event.srcElement.tagName=="IMG") document.body.focus();
}

 

/**************************************************************************
 fucntion : 날짜형식 체크
 input : elem(객체), elemCaption(타이틀)
 ouput : true(YYYY-MM-DD)
***************************************************************************/

function FormatDate(elem, elemCaption){
 var day = elem.value;
 var dateArr =  day.split("-");
 var str=/^[0-9]+$/;

 if (dateArr.length != 3){
  alert(elemCaption + "의 날짜 형식이 올바르지 않습니다.(YYYY-MM-DD)");
  elem.focus();
  return false;
 }
 
 for(var i = 0 ; i < dateArr.length ; i++){
  if(!str.test(dateArr[i])){
   alert(elemCaption + "의 날짜 형식이 올바르지 않습니다.(YYYY-MM-DD)");
   elem.focus();
   return false;
  }
 }
 
 if (dateArr[0].length != 4){
  alert(elemCaption + "의 연도의 형식(YYYY)이 올바르지 않습니다.");  
  elem.focus();
  return false;
 }
 
 if (dateArr[1].length != 2){
  alert(elemCaption + "의 월의 형식(MM)이 올바르지 않습니다.");  
  elem.focus();
  return false;
 } 

 if ((Number(dateArr[1]) < 1) || (Number(dateArr[1]) > 12)){
  alert(elemCaption + "의 월을 1~12 사이로 입력하십시오.");  
  elem.focus();
  return false;
 }  
 
 if (dateArr[2].length != 2){
  alert(elemCaption + "의 일의 형식(DD)이 올바르지 않습니다.");  
  elem.focus();
  return false;
 }  
 
 if ((Number(dateArr[2]) < 1) || (Number(dateArr[2]) > 32)){
  alert(elemCaption + "의 일을 1~31 사이로 입력하십시오.");  
  elem.focus();
  return false;
 } 
  
 return true;
 
}

/*********************************
설명 : 날짜 차이
*********************************/

function DATEDIFF(date1, date2){
 var v1=date1.split("-");
 var v2=date2.split("-");
 
  var a1=new Date(v1[0],v1[1],v1[2]).getTime();
  var a2=new Date(v2[0],v2[1],v2[2]).getTime();

 return (a2 - a1) /(1000*60*60*24);
}

/*********************************
설명 : 포커스 이동
*********************************/

function NextFocus(obj1, obj2, len){
 if (obj1.value.length == len){
  obj2.focus();
 }
}

/*********************************
설명 :
*********************************/

function AjaxRequest(strResponseURL,fSuccess, fError, frm)
{
 var httpObj = new Ajax.Request
 (
  strResponseURL,
  {
    method:'post',
      parameters:Form.serialize(frm),   
      onSuccess:fSuccess,
      onFailure:fError
  }
 );


Posted by 회사원Z
:
function WindowReset(win){ 
  //while(win.document.readyState != 'complete'){}
  var winBody = win.document.body;
  // 새창의 사이즈에 더해줄 marginWidth와 marginHeight
  var marginHeight = parseInt(winBody.topMargin)+parseInt(winBody.bottomMargin);
  var marginWidth = parseInt(winBody.leftMargin)+parseInt(winBody.rightMargin);
  // 새창의 사이즈 설정
  var wid = winBody.scrollWidth + (winBody.offsetWidth - winBody.clientWidth) + marginWidth-5;
  var hei = winBody.scrollHeight + (winBody.offsetHeight - winBody.clientHeight) + marginHeight+17;
  // 사이즈 재조정
  win.resizeTo(wid, hei);
}

<body OnLoad="WindowReset(this)">
Posted by 회사원Z
:


function testcopy(copyvalue)
{
 window.clipboardData.setData("Text",copyvalue);
 alert(copyvalue + " 복사되었습니다.");
}

<span style="cursor:pointer" onClick="javascript:testcopy('http://www.naver.com')">네이버</span>

네이버라는 글자를 클릭 시 클립보드에 http://www.naver.com이 들어간다.
Posted by 회사원Z
:


<input type="text" onFocus="this.value='';return true;">




Posted by 회사원Z
:

function allchk(){
 var obj = window.document.controlcontent;
 if (obj.checkall.checked){
  for (var i=0;i<obj.checkcontent.length;i++){
   obj.checkcontent[i].checked = true;
  }
 }
 else{
  for (var i=0;i<obj.checkcontent.length;i++){
   obj.checkcontent[i].checked = false;
  }
 }
}
Posted by 회사원Z
:


function controlmyticon(storeno){
 var w = "400";
 var h = "400";
 var winl = (screen.width - w)/2; ;
 var wint = (screen.height - h)/2; ;
 var myname = 'controlmyticon';
 var mypage = '';
 mypage = 'smsemoticon.asp?temp=temp&storeno='+storeno;
 winprops = 'height='+h+',width='+w+',top='+wint+',scrollbars=yes,left='+winl
 win = window.open(mypage, myname, winprops)
 if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
}

(screen.width - w)/2 : 창 위치를 중간으로
Posted by 회사원Z
:


<script language="javascript">
function Ev_onbeforeunload(){
 window.opener.document.location.href = window.opener.document.URL;
}
</script>

<body onunload="Ev_onbeforeunload()">

(X)버튼을 누르건 종료이벤트를 발생해서 자식창을 닫건 자식창이 닫힐 때 부모창이 새로고침된다.


'jQuery & JavaScript*' 카테고리의 다른 글

클릭시 설정값 복사  (2) 2009.03.19
input text 클릭 시 value 값 삭제(초기화)  (0) 2009.03.19
Checkbox 전체선택/해제  (0) 2009.01.21
Popup창 띄우는 Function  (0) 2009.01.16
첨부파일 폼추가 java script  (0) 2008.11.03
Posted by 회사원Z
:


    function addFile()
    {
        var str = '<br><input type="file" size="40" name="File" />';
        str += '<br><input type="file" size="40" name="File" />';
        document.getElementById('AddFile').insertAdjacentHTML("beforeEnd",str);
    }


    document.forms[0].encoding = "multipart/form-data";

Posted by 회사원Z
:

카테고리

More More* (98)
iPHONE* (7)
Power Builder* (31)
HTML5* (2)
CSS3* (1)
jQuery & JavaScript* (17)
ASP* (20)
MSSQL* (10)
ETC* (10)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2025/07   »
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

글 보관함