有个问题请教(LxcJie看到一定要进,因为是看了你的帖子的疑问)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN ">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME= "Generator " CONTENT= "EditPlus ">
<META NAME= "Author " CONTENT= " ">
<META NAME= "Keywords " CONTENT= " ">
<META NAME= "Description " CONTENT= " ">
<meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 ">
</HEAD>
<BODY>
<form name= "form1 " method= "post " action= " ">
日期: <input type= "text " id= "a " onclick= "restrictInputValue(this) " onkeydown= "ddd(this) " >
</form>
</BODY>
</HTML>
<script language= "javascript ">
window.onload=init;
function init(){
var oDate = new Date();
var result= oDate.getFullYear()+ "- "+(oDate.getMonth() <10?( "0 " + (oDate.getMonth()+1)):(oDate.getMonth()+1))+ "- "+(oDate.getDate() <10?( "0 " + oDate.getDate()) : oDate.getDate());
document.getElementById( "a ").value=result;
}
function restrictInputValue(obj)
{
var range = obj.createTextRange();
var selRange = document.selection.createRange();
range.moveStart( "character ",-obj.value.length)
selRange.setEndPoint( "StartToStart ",range);
if(selRange.text.length <5){
specialText_SelectYear(obj);
}
else if(selRange.text.length> 4&&selRange.text.length <8){
specialText_SelectMonth(obj)
}
else{
specialText_SelectDate(obj)
}
}
function specialText_SelectYear(oInput)
{
var oRange = oInput.createTextRange();
oRange.moveStart( "character ",0);
oRange.moveEnd( "character ",-6);
//代表选中了年
oInput.selectIndex = 1;
oRange.select();
}
//选中月份
function specialText_SelectMonth(oInput)
{
var oRange = oInput.createTextRange();
oRange.moveStart( "character ",5);
oRange.moveEnd( "character ",-3);
//代表选中了月
oInput.selectIndex = 2;
oRange.select();
}
//选中日期
function specialText_SelectDate(oInput)
{
var oRange = oInput.createTextRange();
oRange.moveStart( "character ",8);
//代表选中了日期
oInput.selectIndex = 3;
oRange.select();
}
function ddd(oInput){
oEvent=window.event
if((oEvent.keyCode > = 48 && oEvent.keyCode <= 57) ||
(oEvent.keyCode > = 96 && oEvent.keyCode <= 105)){
return;
}
oEvent.returnValue=false;
}
</script>
我已经实现了点击年月日出现高亮,但是点击键盘左右键选择一直没有成功,帮帮忙
[解决办法]
你没有注册按键的事件,所以不响应左右键,呵呵
[解决办法]
IE的话,要用oEvent.returnValue = false;禁止事件的默认状态,然后再通过程序操作选中状态。
另外,selectIndex是自定义的一个标志位,用来标记当前选中的位置,需要初始化一个值
试一下下面的代码,按右键可以动作了
================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN ">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME= "Generator " CONTENT= "EditPlus ">
<META NAME= "Author " CONTENT= " ">
<META NAME= "Keywords " CONTENT= " ">
<META NAME= "Description " CONTENT= " ">
<meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 ">
</HEAD>
<BODY>
<form name= "form1 " method= "post " action= " ">
Date: <input type= "text " id= "a " onclick= "restrictInputValue(this) " onkeydown= "ddd(this) " selectIndex=1 >
</form>
</BODY>
</HTML>
<script language= "javascript ">
window.onload=init;
function init(){
var oDate = new Date();
var result= oDate.getFullYear()+ "- "+(oDate.getMonth() <10?( "0 " + (oDate.getMonth()+1)):(oDate.getMonth()+1))+ "- "+(oDate.getDate() <10?( "0 " + oDate.getDate()) : oDate.getDate());
document.getElementById( "a ").value=result;
}
function restrictInputValue(obj)
{
var range = obj.createTextRange();
var selRange = document.selection.createRange();
range.moveStart( "character ",-obj.value.length)
selRange.setEndPoint( "StartToStart ",range);
if(selRange.text.length <5){
specialText_SelectYear(obj);
}else if(selRange.text.length> 4&&selRange.text.length <8){
specialText_SelectMonth(obj)
}else{
specialText_SelectDate(obj)
}
}
function specialText_SelectYear(oInput)
{
var oRange = oInput.createTextRange();
oRange.moveStart( "character ",0);
oRange.moveEnd( "character ",-6);
//Select Year
oInput.selectIndex = 1;
oRange.select();
}
function specialText_SelectMonth(oInput)
{
var oRange = oInput.createTextRange();
oRange.moveStart( "character ",5);
oRange.moveEnd( "character ",-3);
//Select Month
oInput.selectIndex = 2;
oRange.select();
}
function specialText_SelectDate(oInput)
{
var oRange = oInput.createTextRange();
oRange.moveStart( "character ",8);
//Select Date
oInput.selectIndex = 3;
oRange.select();
}
function ddd(oInput){
oEvent=window.event
oEvent.returnValue = false;
if(oEvent.keyCode == 39){
//Right
if(oInput.selectIndex == 1){
specialText_SelectMonth(oInput);
}else if(oInput.selectIndex == 2){
specialText_SelectDate(oInput);
}else if(oInput.selectIndex == 3){
specialText_SelectYear(oInput);
}
}
}
</script>