⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dtpicker.htc

📁 HTC,demo WEB用于。 超大型
💻 HTC
📖 第 1 页 / 共 2 页
字号:
		if(vEleClient <= vListHeight) vListTop += vListHeight -vEleClient;
	}
	vEleClient = vElementLeft - element.document.body.scrollLeft;
	vDocClient = element.document.body.clientWidth;
	if(vDocClient - vEleClient < vListWidth) vListLeft -= vListWidth - (vDocClient - vEleClient)
	objList.style.pixelTop = vListTop;
//	objList.style.left = vListLeft;
  objList.style.left = objText.offsetWidth;

}

var vMaxDate,vMinDate,vDatePart;
var vKeyInput;

function selectRange(){ //鼠标选择objInput中的日期

		validateKeyInput();

  if(vReadOnly == "true"){//如果只读
    objRange = null;
    objInput.blur();
    
  }
  objRange = null;
	objRange = element.document.selection.createRange();
	objRange.expand("word");
  if(objRange.text==""){//如果没有选中文字
    objInput.blur();
  };
	switch(objRange.text.replace(/\s/g,"")){
	case "年":
	case "月":
	case "日":
		objRange.move("character",-1);
		objRange.expand("word");
		break;
	case "":
		objRange.move("word",-2);
		objRange.expand("word");
		break;
	}
	if(objRange.text.replace(/\d/g,"") == ""){
		getDatePart();
		objRange.select();
	}
	else{
		objRange.move("textedit",1);
		objRange.select();
		objRange = null;
	}
}

function turnDate(){ //翻动objRange中的日期值
	var vRangeText;
  
  if(window.event.keyCode == 27){//如果是按下ESC键
    setDateNull();//恢复默认值
    objInput.value = text;
    return ;
  }

	if(!objRange || objRange.text == "") return;
  if(tagOnKey != objRange){//如果焦点还没有转化
    if(tagOnKey != null){
      validateKeyInput();
    }else {
      OldvDatePart = vDatePart;//保存当前的类型
      tagOnKey = objRange;//保存当前的操作段
    }
  }//end if(tagOnKey!= objange)
	switch(window.event.keyCode){
	case 37:  //左箭头
		validateKeyInput();
    if(vDatePart!='year'){//如果是年,则不能再往左走
      vRangeText = objRange.text;
      objRange.move("character",-2)
      objRange.expand("word");
      if(objRange.text == vRangeText){
        objRange.move("textedit",1);
        objRange.move("character",-4);
        objRange.expand("word");
      }
      getDatePart();
      objRange.select();
    }
		break;
	case 39:  //右箭头
		validateKeyInput(); //如果有用户键盘输入,则马上计算
    if(vDatePart!='date'){//如果是日期,则不能再往右走
      objRange.move("word",2)
      objRange.expand("word");
      if(objRange.text == ""){
        objRange.move("word",-6);
        objRange.expand("word");
      }
      getDatePart(); //得到textRange环境
      objRange.select();
    }
		break;
	case 38:  //上箭头
		vRangeText = parseInt(objRange.text) + 1;
		if(vRangeText > vMaxDate) vRangeText = vMinDate;
		dateUpDown(vRangeText);
		break;
	case 40:  //下箭头
		vRangeText = parseInt(objRange.text) - 1;
		if(vRangeText < vMinDate) vRangeText = vMaxDate;
		dateUpDown(vRangeText);
		break;
	case 48:
	case 96:  //0 - 9
		keyInput(0);
		break;
	case 49:
	case 97:
		keyInput(1);
		break;
	case 50:
	case 98:
		keyInput(2);
		break;
	case 51:
	case 99:
		keyInput(3);
		break;
	case 52:
	case 100:
		keyInput(4);
		break;
	case 53:
	case 101:
		keyInput(5);
		break;
	case 54:
	case 102:
		keyInput(6);
		break;
	case 55:
	case 103:
		keyInput(7);
		break;
	case 56:
	case 104:
		keyInput(8);
		break;
	case 57:
	case 105:
		keyInput(9);
		break;
	}
	window.event.returnValue = false;
}

function getDatePart(){ //确定objRange的环境(极值和所属部分)
	if(!objRange) return;
	objRange.moveEnd("word",1);
	switch(objRange.text.replace(/\d/g,"")){
	case "年":
		vMaxDate = 9999;
		vMinDate = 1601;
		vDatePart = "year";
		break;
	case "月":
		vMaxDate = 12;
		vMinDate = 1;
		vDatePart = "month";
		break;
	case "日":
		vMaxDate = getTotalDates(month);
		vMinDate = 1;
		vDatePart = "date";
		break;
	}
	objRange.moveEnd("word",-1);
  tagOnKey = null;
}

function dateUpDown(argValue){ //在objRange中按上下方向键
	var objDateRange,vMaxDate;
	objRange.text = argValue;
	objRange.move("character",-1);
	objRange.expand("word");
	objRange.select();
	eval(vDatePart + "=" + argValue);
	validateDate(); //验证日
}

function validateDate(){ //如果改变年月导致日错误则改变日
	var vMaxDate = getTotalDates(month);
	if(date > vMaxDate){
		objDateRange = objInput.createTextRange();
		objDateRange.move("textedit",1);
		objDateRange.move("word",-2);
		objDateRange.expand("word");
		objDateRange.text = vMaxDate;
		date = vMaxDate;
	}
}

function keyInput(argKey){ //键盘输入日期
	if(!objRange) return;
  switch(vDatePart){
	case "year":
		if(!vKeyInput) vKeyInput = "0000";
		break;
	case "month":
	case "date":
		if(!vKeyInput) vKeyInput = "00";
		break;
	default:
		return;
	}
	if(vKeyInput.indexOf("0") == 0){
		window.clearTimeout(vTimeout2);
		vKeyInput = vKeyInput.substr(1) + argKey;
    objRange.text = vKeyInput;
    objRange.moveStart("word", -1);
		objRange.expand("word");
    objRange.select();
		vTimeout2 = window.setTimeout(validateKeyInput,1000);
	}
}

function validateKeyInput(){ //验证用户键盘输入日期
	var vTemp;
  var tmpRange,tmpvDataPart;//保存中间段位信息
  if(tagOnKey!= null){
    tmpRange = objRange;//取出原来的段
    objRange = tagOnKey;
    tmpvDatePart = vDatePart;
    vDatePart = OldvDatePart;
  }
	if(!objRange || !vKeyInput) return;
	window.clearTimeout(vTimeout2);

	switch(vDatePart){
	case "year":
		vTemp = parseInt(vKeyInput,10);
		if(vTemp >= 0 && vTemp < 10){
			year = parseInt("200" + vTemp);
			validateDate();
		}
		else if(vTemp >= 10 && vTemp < 50){
			year = parseInt("20" + vTemp);
			validateDate();
		}
		else if(vTemp >=50 && vTemp <= 99){
			year = parseInt("19" + vTemp);
			validateDate();
		}
		else if(vTemp >= 1601 && vTemp <=9999){
			year = vTemp;
			validateDate();
		}
		objRange.text = year;
		break;
	case "month":
		vTemp = parseInt(vKeyInput,10);
		if(vTemp <= 12 && vTemp >= 1){
			month = vTemp;
			validateDate();
		}
		objRange.text = month;
		break;
	case "date":
		vTemp = parseInt(vKeyInput,10);
		if(vTemp <= getTotalDates(month) && vTemp >= 1){
			date = vTemp;
		}
		objRange.text = date;
	}
  
  objRange.move("character",-1);
	objRange.expand("word");
//  objRange.select();
  //恢复原来的段信息
  if(tmpRange){
    objRange = tmpRange;
    vDatePart = tmpvDatePart;
  }
  objRange.select();
	vKeyInput = null;
  tagOnKey = null;//重新更新的标志位

  setInputVisibility();
}

function setDate(argDate){
/*  var vDate = argDate;
  if(argDate != null){
    year = vDate.getFullYear();
    month = vDate.getMonth() + 1;
    date = vDate.getDate();
  }else{
    year = "1900";
    month = "01";
    date = "01";
  }
 */

  var vDate = (argDate)?argDate:(new Date());
	year = vDate.getFullYear();
	month = vDate.getMonth() + 1;
	date = vDate.getDate();

  setInputVisibility();
}
function setDateNull(){//处理01-1月 -00年
  year = "1900";
  month = "1";
  date = "01";
  setInputVisibility();
}

function getTotalDates(vMonth){ //return some month's max date
	var arrTotalDates = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	if(vMonth == 2 && year % 4 == 0){
		if(year % 100 == 0 && year % 400 != 0) return(28);
		return(29);
	}
	return(arrTotalDates[vMonth - 1]);
}

function changeYear(){ //年改变时objList的外观变化
	objYearBox.innerText = year;
	fillDates();
	objInput.value = text;
}

function changeDate(){ //月日改变时objList的外观变化
	var arrMonths = new Array("一月", "二月", "三月", "四月", "五月",	"六月", "七月", "八月", "九月", "十月", "十一月", "十二月");

	if(month == 0){
		month = 12;
		year -= 1;
	}
	else if(month == 13){
		month = 1;
		year += 1;
	}
	objMonthBox.innerText = arrMonths[month - 1];
	changeYear();
}

function stopLoop(){ //停止连续翻动日历
	window.clearTimeout(vTimeout2);
}

function stopLoop2(){ //停止翻动和渐变
	stopLoop();
	window.clearTimeout(vTimeout);
	objLight = window.event.srcElement;
}

function overBtn(){ //移动到objBtn上的样式
	var objBtnBg = objBtn.children(0); //表现按钮背景的<v:roundrect>
	objBtnBg.fillcolor = "#BDE3FF";
	objBtnBg.fill.color2 = "#E7F3FF";
}

function outBtn(){ //objBtn复原为原有样式
	var objBtnBg;

	if(objList && objList.style.display != "none") overBtn(); //如果calendar开着就变成over btn样式
	else{
		objBtnBg = objBtn.children(0); //表现按钮背景的<v:roundrect>
		objBtnBg.fillcolor = "#B5CFFF";
		objBtnBg.fill.color2 = "#DEE3FF";
	}
}

function downBtn(){ //objBtn按下后的样式
	var objBtnBg = objBtn.children(0); //表现按钮背景的<v:roundrect>
	objBtnBg.fillcolor = "#9CB2F7";
	objBtnBg.fill.color2 = "#6B8EF7";
}

function noResponse(){
	window.event.cancelBubble = true;
	window.event.returnValue = false;
}

function refresh(){ // 刷新
	var objTemp;

  objText.innerText = caption;//调协Caption

	with(element){
		style.width = parseInt(width)+parseInt(objText.offsetWidth);
		style.pixelHeight = height;
		style.top = top;
		style.left = left;
    style.border = "0px";
	}
  with(objDIVBorder){//设置边框
    style.pixelWidth =parseInt(width);// parseInt(width);
		style.pixelHeight = height - 1;
    style.left = objText.offsetWidth -1;
    style.border = "1px solid #7B9EBD";
  }
	if(width > 18) objInput.style.pixelWidth = width - 20;
	else{
		objInput.style.pixelWidth = width - 8;
		objBtn.style.pixelWidth = 6;
	}
	objBtn.style.pixelHeight = Math.min(height - 4,16);
	objBtn.style.left = objInput.style.pixelWidth+1;

	objInput.style.fontSize = (height < 15)?"8pt":"9pt";
	objInput.style.pixelHeight =(height < 17)?(height - 2):(height - 3);
	objInput.style.marginTop = (height < 17)?0:1;

  setInputVisibility();
  objInput.style.left = objText.offsetWidth;


	if(value.indexOf("null") != -1) value = null; //输入空值
	objInput.value = text;
	//for locating the list box
	objTemp = element;
	vElementTop = 0;
	vElementLeft = 0;
	while(objTemp != null){
		vElementTop += objTemp.offsetTop;
		vElementLeft += objTemp.offsetLeft;
		objTemp = objTemp.offsetParent;
	}
  setBtn();
  
}

function initialize(){
  //全局变量赋值
	
  vClickNum = false;
	vListHeight = 155;
	vListWidth = 150;
  
  objDIVBorder = element.document.createElement("<div style='position:absolute;top:-1px;z-index:2'></div>");
  objDIVBorder = element.appendChild(objDIVBorder);

	//create dropdown button (btn)
	element.insertAdjacentHTML("afterBegin","<v:group style='top:1px;right:1px;position:absolute;width:14px; height:16px;z-index:3;' coordsize='14,16'><v:roundrect arcsize='0.1' style='width:14;height:14;' fillcolor='#B5CFFF' strokecolor='#ADC3F7'><v:fill type='gradientradial' color2='#DEE3FF' angle='75'/></v:roundrect><v:polyline style='position:absolute;top:6; left:4' points='-1,0 3,3 7,0' strokecolor='#4A6184' strokeweight='2px' filled='false'/><v:oval id=test style=\"width: 10; height: 10;left:2;top:2;\"><v:stroke weight=\"1px\" color=\"#4A6184\"/></v:oval><v:polyline style='position:absolute;top:6; left:4' points='0,-1 3,2 6,0' strokecolor='#0066FF' strokeweight='1px' filled='false'/></v:group><xml:namespace ns='schemas-microsoft-com:VML' prefix='v'/>");
	objBtn = element.children(0);
  objBtn = objDIVBorder.appendChild(objBtn);
  if(vReadOnly=='false' || vReadOnly==false)
    with(objBtn){
      onmousedown = clickBtn;
      onmouseup = overBtn;
      onmouseover = overBtn;
      onmouseout = outBtn;
    }
  
	//create input box
	objInput = element.document.createElement("<input class='sc_dt_input'/>");
	objInput = element.appendChild(objInput);
  
	objText = element.document.createElement("<span style='position:absolute;top:3'></apan>");
	objText = element.appendChild(objText);

	with(objInput){
		onmouseover = overBtn;
		onmouseout = outBtn;
		onmousedown = hideCalendar3;
		onmouseup = selectRange;
		ondblclick = noResponse;
		onkeydown = turnDate;
		onfocus = focusInput;
		onblur = blurInput;
	}
  

	refresh();
  putReadOnly("false");
	element.style.visibility = "visible";
}

function setBtn(){//设置按钮
  var objBtnStyle1 = objBtn.children(0);
  var objBtnStyle2 = objBtn.children(1);
  var objBtnStyle3 = objBtn.children(2);
  var objBtnStyle4 = objBtn.children(3);

  if(vReadOnly==false||vReadOnly=='false'){
    objBtnStyle1.strokecolor = "#ADC3F7";
    objBtnStyle1.fillcolor = "#B5CFFF";
    objBtnStyle1.fill.color2 ="#DEE3FF";
    objBtnStyle2.strokecolor = "#4A6184";
    objBtnStyle3.strokecolor="#4A6184";
    objBtnStyle4.strokecolor="#009933";
  }else{
    objBtnStyle1.strokecolor = "#999999";
    objBtnStyle1.fillcolor = "#F0F0F0";
    objBtnStyle1.fill.color2 ="#cccccc";
    objBtnStyle2.strokecolor = "#AAAAAA";
    objBtnStyle3.strokecolor="#cccccc";
    objBtnStyle4.strokecolor="#cccccc";
  }    
}

function setInputVisibility(){//设备objInput是否隐藏
  if(objInput){
  if(year=='1900' && parseInt(month)==1 && parseInt(date)==1){
    objInput.style.visibility = 'hidden';
  }else
    objInput.style.visibility = 'visible';
}
}
//-->
</script>
</public:component>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -