<input type="text" name="pre1" size="4" maxlength = '4' onpropertychange = "checkLength(this);" >
<input type="text" name="pre2" size="6" maxlength = '6' onpropertychange = "checkLength(this);" >
<input type="text" name="pre3" size="8" maxlength = '8' ><script language="javascript">
<!--
function checkLength(o)
{
if( o.value.length == o.maxLength )
{
o=o.nextSibling;
while( o.nodeType != 1 )
{
o=o.nextSibling;
}
}
o.focus();
}
//-->
</script>

解决方案 »

  1.   


    用这个“document.all['pre2'].focus();”也很通用啊。
    看看下面的程序?:<script>
    function autofocus(){
      if((event.keyCode>47 && event.keyCode <58) ||
    (event.keyCode>64 && event.keyCode<91) ||
    (event.keyCode>=96 && event.keyCode<123)){ //当按键为数字和大小写字母时(小键盘的0居然是96)
        if(event.srcElement.value.length==event.srcElement.size){
            var n=event.srcElement.name.substring(3)/1+1;
    document.all['pre' + n].focus();
        }
      }
    }
    </script><input type="text" name="pre1" size="4" maxlength='4' onkeydown="autofocus(this)"><div>中间隔一个</div>
    <input type="text" name="pre2" size="6" maxlength='8' onkeydown="autofocus(this)">
    <input type="text" name="pre3" size="8" maxlength='1' >稻草人的程序在这种情况下肯定出问题:
    <input type="text" name="pre1" size="4" maxlength='4' onkeydown="autofocus(this)"><br>
    <input type="text" name="pre2" size="6" maxlength='8' onkeydown="autofocus(this)">
    <input type="text" name="pre3" size="8" maxlength='1' >
      

  2.   

    楼上的,我的通用是说做成公共函数,不要依赖input 名字哦to:稻草人
    怎么弄出个 onpropertychange 事件来了? 不通用,换
      

  3.   

    帖子加到100分了
    问题还是没解决
    <script>
    function autofocus(){
      if((event.keyCode>47 && event.keyCode <58) ||
    (event.keyCode>64 && event.keyCode<91) ||
    (event.keyCode>=96 && event.keyCode<123)){//当按键为数字和大小写字母时(小键盘的0居然是96)
        if(event.srcElement.value.length==event.srcElement.size){
            var n=event.srcElement.name.substring(3)/1+1;
    document.all['pre' + n].focus();
        }
      }
    }
    </script>
    ---------------------------------------
    如果不知道要转向的下一个文本框的名称怎么办? document.all['pre' + n].focus(); 这个不能用的稻草人用了一个onpropertychange 
    偶在struts 下做东西, struts 不能用这个事件
      

  4.   

    <input type="text" name="pre1" size="4" maxlength = '4' onkeypress = "var e = window.event || event;checkLength(this,e);">
    <input type="text" name="pre2" size="6" maxlength = '6' onkeypress = "var e = window.event || event;checkLength(this,e);">
    <input type="text" name="pre3" size="8" maxlength = '8' ><script language="javascript">
    <!--
    function checkLength(o,e)
    {
    if( o.value.length == o.maxLength-1 )
    {
    var n=o.nextSibling;
    while( n.nodeType != 1  && n.tagName != "input" )
    n=n.nextSibling;
    code = e.charCode || e.keyCode;
    o.value += String.fromCharCode( code );
    n.focus();
    e.returnValue = false;
    }
    }
    //-->
    </script>
      

  5.   

    稻兄
    为什么把input 放到table 里面就出现缺少对象错误哪?
    <table width="20%" border="1" cellspacing="0" cellpadding="0">
    <tr>
    <td><input type="text" name="id1" maxlength="4" size="4" value="" onkeypress="var evt = window.event || event; checkLength(this,evt);" ></td>
    <td><input type="text" name="id2" maxlength="4" size="4" value="" onkeypress="var evt = window.event || event; checkLength(this,evt);" ></td>
    <td><input type="text" name="id3" maxlength="8" size="8" value="" onkeypress="var evt = window.event || event; checkLength(this,evt);" ></td>
    <td><input type="text" name="id4" maxlength="1" size="1" value="" ></td>
    </tr>
    </table>
      

  6.   

    <html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312"><script>
    function autofocus(){
      if((event.keyCode>47 && event.keyCode <58) ||(event.keyCode>64 && event.keyCode<91) ||(event.keyCode>=96 && event.keyCode<123) )
      {//当按键为数字和大小写字母时(小键盘的0居然是96)
        if(event.srcElement.value.length == event.srcElement.size){
            event.srcElement.nextSibling.nextSibling.focus();
        }
      }
    }</script>
    </head><body><input type="text" name="pre1" size="4" maxlength = '4' onkeyup = "autofocus();" >
    <input type="text" name="pre2" size="6" maxlength = '8' onkeyup = "autofocus();" >
    <input type="text" name="pre3" size="8" maxlength = '1' >
    </body></html>
      

  7.   

    Sorry,没注意到ice_berg16(寻梦的稻草人)已经贴上了利用nextSibling的代码。
      

  8.   

    放到table中,使用nextSibling就不行了。换一种方法。
    <table width="20%" border="1" cellspacing="0" cellpadding="0">
    <tr>
    <td><input type="text" name="id1" maxlength="4" size="4" value="" onkeypress="var evt = window.event || event; checkLength(this,evt);" ></td>
    <td><input type="text" name="id2" maxlength="4" size="4" value="" onkeypress="var evt = window.event || event; checkLength(this,evt);" ></td>
    <td><input type="text" name="id3" maxlength="8" size="8" value="" onkeypress="var evt = window.event || event; checkLength(this,evt);" ></td>
    <td><input type="text" name="id4" maxlength="1" size="1" value="" ></td>
    </tr>
    </table>
    <script language="javascript">
    <!--
    function checkLength(o,e)
    {
    var is = document.getElementsByTagName( "input" );
    for(i=0;i<is.length;i++)
    {
    if( is[i] == o )
    {
    var n = is[i+1];
    break;
    }
    }
    if( o.value.length == o.maxLength-1 )
    {
    code = e.charCode || e.keyCode;
    o.value += String.fromCharCode( code );
    n.focus();
    e.returnValue = false;
    }
    }
    //-->
    </script>
      

  9.   

    乖乖的上网求助,自己笨就算了还在满腔抱怨啊?如果名字都是“固定开头字母串+连续数字”的话,用name+Number为什么不行?
    你放大眼看看下面的程序?:<script>
    function autofocus(){
      if((event.keyCode>47 && event.keyCode <58) ||
    (event.keyCode>64 && event.keyCode<91) ||
    (event.keyCode>=96 && event.keyCode<123)){//当按键为数字和大小写字母时(小键盘的0居然是96)
        if(event.srcElement.value.length==event.srcElement.size){
            var n=event.srcElement.name.substring(3)/1+1;
    document.all[event.srcElement.name.substring(0,3) + n].focus();
        }
      }
    }
    </script><input type="text" name="pre1" size="4" maxlength='4' onkeydown="autofocus(this)"><div>中间隔一个</div>
    <input type="text" name="pre2" size="6" maxlength='8' onkeydown="autofocus(this)">
    <input type="text" name="pre3" size="8" maxlength='1' >
    上面的程序根本就与“pre”无关,文本框命名格式只要是“固定开头字母串 + 连续数字”就行。
    谁说“document.all['pre' + n].focus(); 这个不能用的”??
    难道别人写的程序你只会一成不变地用吗?理解一下不行吗?