<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>
<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>
用这个“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' >
怎么弄出个 onpropertychange 事件来了? 不通用,换
问题还是没解决
<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 不能用这个事件
<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>
为什么把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>
<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>
<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>
你放大眼看看下面的程序?:<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(); 这个不能用的”??
难道别人写的程序你只会一成不变地用吗?理解一下不行吗?