IT_Programming/JavaScript

[스크랩] 텍스트박스에 숫자 및 콜론 입력 가능하게하는 이벤트 핸들러 함수

JJun ™ 2006. 10. 16. 21:23

/************************************************************************
함수명  : fn_CheckTime()
매개변수 : 없음.
     
반환값  : 없음.
작성목적 : 텍스트박스에 숫자 및 콤마 입력 가능하게하는 이벤트 핸들러 함수
              onkeypress = "fn_CheckFloat()"
              onkeyup  = "fn_CheckFloatUp()"
              onblur  = "fn_CheckFloatBlur()" 형태로 동시사용
최종작성일 : 2006.09.25
수정내역 :   
*************************************************************************/
var vCheckTime = "00:00";
var timeInAble  = true;
function fn_CheckTimeDown()
{
 if(timeInAble)
 {
  if(event.keyCode != 8 && event.keyCode != 37 && event.keyCode != 39)
   timeInAble = false;
  vCheckTime = event.srcElement.value;
 }
 else
 {
  event.returnValue = false;
  event.cancelBubble = true;
 }
}

function fn_CheckTimeUp()
{
 timeInAble = true;
 if(event.keyCode != 8)
 {
  if(event.srcElement.value.length == 2)
   event.srcElement.value += ":";
  else if(event.srcElement.value.length == 3)
  {
   if(event.srcElement.value.charAt(2) != ":")
   {
    event.srcElement.value =
     event.srcElement.value.charAt(0) +
     event.srcElement.value.charAt(1) + ":" +
     event.srcElement.value.charAt(2);
   } 
  }
  else if(event.srcElement.value.length == 4)
  {
   if(event.srcElement.value.split(":").length == 1)
   {
    event.srcElement.value =
     event.srcElement.value.charAt(0) +
     event.srcElement.value.charAt(1) + ":" +
     event.srcElement.value.charAt(2) +
     event.srcElement.value.charAt(3);
   }
  }
  else if(event.srcElement.value.length == 5)
  {
   if(event.srcElement.value.split(":").length == 1)
   {
    event.srcElement.value = vCheckFloat;
   }
  }
  
  var cnt = 0;
  var reValue = false;
  for(cnt = event.srcElement.value.length ; cnt > 0 ; cnt--)
  {
   switch(cnt)
   {
    case 4:
     if(event.srcElement.value.charAt(3) > "5")
      reValue = true;
     break;
    case 2:
     if(event.srcElement.value.charAt(0) == "2")
      if(event.srcElement.value.charAt(1) > "3")
       reValue = true;
     break;
    case 1:
     if(event.srcElement.value.charAt(0) > "2")
      reValue = true;
     break;
   }
  }
  if(reValue) event.srcElement.value = vCheckTime;
 } 
}

function fn_CheckTimeBlur()
{
 var cnt = 0;
 var tmp = "00:00";
 for(cnt = event.srcElement.value.length ; cnt < 5 ; cnt++)
 {
  event.srcElement.value += tmp.charAt(cnt);
 }
}

function fn_CheckTimeSet(objID)
{
 var targetObj = null;
 
 if(objID == undefined || objID == null)
  targetObj = event.srcElement;
 else
  fn_GetObjID(objID)
 
 targetObj.maxLength  = 5;
 targetObj.style.imeMode = "disabled";
 targetObj.onpaste  = fn_CheckPaste;
 targetObj.onkeydown  = fn_CheckTimeDown;
 targetObj.onkeypress = fn_CheckNumber;
 targetObj.onkeyup  = fn_CheckTimeUp;
 targetObj.onblur  = fn_CheckTimeBlur;
}

출처 : ▶ 一人を ために◀
글쓴이 : 앙알앙알 원글보기
메모 :