首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

有个有关问题请问(LxcJie看到一定要进,因为是看了你的帖子的疑问)

2012-02-20 
有个问题请教(LxcJie看到一定要进,因为是看了你的帖子的疑问)!DOCTYPEHTMLPUBLIC-//W3C//DTDHTML4.0Tran

有个问题请教(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>

热点排行