var key = evt.keyCode;
    
    var KEYUP = 38;
    var KEYDOWN = 40;
    var KEYENTER = 13;
    var KEYTAB = 9;
    if(( key != KEYUP ) && ( key != KEYDOWN ) && ( key != KEYENTER ) && ( key != KEYTAB ))
    {
        return true;
    }
    var selNum = getSelectedSpanNum( div );
    var selSpan = setSelectedSpan( div, selNum );
    if( key == KEYENTER || key == KEYTAB )
    {
        if( selSpan )
        {
            _selectResult(selSpan);
        }
        evt.cancelBubble= true;
        return false;
    }    
    else
    {
        if( key == KEYUP)
        {
            selSpan = setSelectedSpan( div, selNum - 1 );           
        }
        if( key == KEYDOWN )
        {
            selSpan = setSelectedSpan( div, selNum + 1 );
        }
        if( selSpan )
        {
            _highlightResult( selSpan );
        }
    }
    showDiv( true );
    return true;
}function getSelectedSpanNum( div )
{
    var count = -1;
    var spans = div.getElementsByTagName("div");
    if( spans )
    {
        for( var i = 0; i < spans.length; i++)
        {
            count++;
            if( spans[i].style.backgroundColor != div.style.backgroundColor )
            {
                return count;
            }
        }
    }
    return -1;
}
function setSelectedSpan( div, spanNum )
{
    var count = -1;
    var thisDiv;
    var divs = div.getElementsByTagName("div");
    if( divs )
    {
        for( var i = 0; i < divs.length; i++ )
        {
            if( ++count == spanNum )
            {
                _highlightResult( divs[i] );
                thisDiv = divs[i];
            }
            else
            {
                _unhighlightResult( divs[i] );
            }
        }        
    }
    return thisDiv;
}function adjustiFrame()
{
    if(!document.getElementById(ifName))
    {
        var newNode = document.createElement("iFrame");
        newNode.setAttribute("id", ifName);
        newNode.setAttribute("src","javascript:false;");
        newNode.setAttribute("scrolling","no");
        newNode.setAttribute("frameborder","0");
        document.body.appendChild( newNode );
    }
    iFrameDiv = document.getElementById( ifName );
    var div = getDiv( divName );    
    try
    {
        iFrameDiv.style.position = "absolute";        
        iFrameDiv.style.width = div.offsetWidth;
        iFrameDiv.style.height = div.offsetHeight;
        iFrameDiv.style.top = div.style.top;
        iFrameDiv.style.left = div.style.left;
        iFrameDiv.style.zIndex = div.style.zIndex - 1;
        iFrameDiv.style.visibility = div.style.visibility;           
    }
    catch (e)
    {}
}
______________________________________________________________________现在我使用自动完成后TextBox1中取得的值如: name (* Sex * Age * Address)
我想再下拉列表中选取一个值后,按下回车或TAB后得到:
TextBox1=name;
TextBox2=Sex;
TextBox3=Age;
TextBox4=Address;
并焦点转移到TextBox2上,如何实现?谢谢

解决方案 »

  1.   

    在回车或TAB事件里写就是了啊,焦点转移直接用获取焦点就行了TextBox2.onfocus()
    <script language=javascript for=document event=onkeydown>
       switch(event.keyCode)
       {
           case  13:
                      TextBox1=name;
                      TextBox2=Sex;
                      TextBox3=Age;
                      TextBox4=Address;
                      TextBox2.onfocus();
                      break;
    ...
      

  2.   

    <script language=javascript for=document event=onkeydown>
       switch(event.keyCode)
       {
           case  13:
                      TextBox1=name;
                      TextBox2=Sex;
                      TextBox3=Age;
                      TextBox4=Address;
                      TextBox2.onfocus();
                      break;
    ...楼上还没明白我的意思,如textbox1选取的值 是  王芳 (* 女 * 20 * 上海)
    我选取后。希望得到:
                      TextBox1=王芳;
                      TextBox2=女;
                      TextBox3=20;
                      TextBox4=上海;
      

  3.   

    也就是把TextBox1原来得到的值进行分解一下,分解的辨别方法是就通过( * )这3个符号,语句应该怎么写?其实我想修改的地方主要应该在:
    var key = evt.keyCode;
        
        var KEYUP = 38;
        var KEYDOWN = 40;
        var KEYENTER = 13;
        var KEYTAB = 9;
        if(( key != KEYUP ) && ( key != KEYDOWN ) && ( key != KEYENTER ) && ( key != KEYTAB ))
        {
            return true;
        }
        var selNum = getSelectedSpanNum( div );
        var selSpan = setSelectedSpan( div, selNum );
        if( key == KEYENTER || key == KEYTAB )
        {
            if( selSpan )
            {
                _selectResult(selSpan);
            }
            evt.cancelBubble= true;
            return false;
        }    
        else
        {
            if( key == KEYUP)
            {
                selSpan = setSelectedSpan( div, selNum - 1 );           
            }
            if( key == KEYDOWN )
            {
                selSpan = setSelectedSpan( div, selNum + 1 );
            }
            if( selSpan )
            {
                _highlightResult( selSpan );
            }
        }
        showDiv( true );
        return true;
    }
      

  4.   

    其实代码基本上是全的了,我是用VS2005写的,后台代码也就是加载了一下AJAX控件和声明了GetSearchItems这个类,并往里面写了一些个人资料( name (* Sex * Age * Address) )把这个问题想的简单点,GOOLE的那种自动填充功能大家应该知道吧,就是当我输入人名“王”的时候,在TEXTBOX1下面会出来很多姓王的列表,但我现在的代码,效果是,当我在列表中选择一条记录后按回车或TAB就会把我选择的记录直接显示在TEXTBOX1上:
        if( key == KEYENTER || key == KEYTAB )
        {
            if( selSpan )
            {
                _selectResult(selSpan);
            }
            evt.cancelBubble= true;
            return false;
        }    我现在想要的就是当我按回车或TAB后,把应该显示在TEXTBOX1中的数据分解,
    如如textbox1选取的值 是  王芳 (* 女 * 20 * 上海)
    我选取后。希望得到:
                      TextBox1=王芳;
                      TextBox2=女;
                      TextBox3=20;
                      TextBox4=上海;
      

  5.   

    用*分解字符串,分成4个,在分别添加到4个TextBox中去,     在onkeyup中写:
    if(keyCode==13)
       var myVariable = TextBox1.text;
       var stringArray = myVariable.split("*");
       TextBox1.text = stringArray[0].replace(/[^\u4E00-\u9FA5]/g,"");
       TextBox2.text = stringArray[1].replace(/[^\u4E00-\u9FA5]/g,"");
       TextBox3.text = stringArray[2].replace(/[^\d]/g,"");
       TextBox4.text = stringArray[3].replace(/[^\u4E00-\u9FA5]/g,"");
      

  6.   

    晕,那不就只是分解字符串吗?不用再弄那么多代码在那嘛。就只说要把王芳 (* 女 * 20 * 上海)分解成4个就行了嘛。楼上那个方法也行,不过不如开始就把(和)replace掉,然后用split直接就分成4个了
      

  7.   

    没用vs2005的ajax 一般用ajax都是自己写
      

  8.   

    if( key == KEYENTER || key == KEYTAB )
        {
            if( selSpan )
            {
                _selectResult(selSpan);                var myVariable = TextBox1.text;
       var stringArray = myVariable.split("*");
       TextBox1.text = stringArray[0].replace(/[^\u4E00-\u9FA5]/g,"");
       TextBox2.text = stringArray[1].replace(/[^\u4E00-\u9FA5]/g,"");
       TextBox3.text = stringArray[2].replace(/[^\d]/g,"");
       TextBox4.text = stringArray[3].replace(/[^\u4E00-\u9FA5]/g,"");
            }
            evt.cancelBubble= true;
            return false;
        } 
    我直接写在JS里面了~按回车后报TextBox1为定义....