输入框有个属性maxlength,可以限制输入框的长度,例如下面是限制只能输两位:
<input type="text" id="SiteTextBox" maxlength="2" />原来的程序是用户在输入框中输好数据后,按回车键,跳到下一个输入框。
原来的代码:
<script type="text/javascript" language="javascript" for="document" event="onkeydown">
//把Enter键转换为TAB键
if(event.keyCode==13 && event.srcElement.type=='text')
{
event.keyCode=9;
}
</script>-------------------------------------------------------------------------------------------------------
现在用户要求,两种情况:
1.如果位数没有输满,按回车跳到下一个输入框。这个我知道如何实现。
2.如果位数输满,不要回车,就直接跳到下一个输入框。例如上面maxlenth="2",用户输了两位数据后,直接跳到下一个输入框。对于第二种情况,我不知道如何做?因为不能把用户输入的键值转换为Enter! 是不是附加一个事件出来?
<input type="text" id="SiteTextBox" maxlength="2" />原来的程序是用户在输入框中输好数据后,按回车键,跳到下一个输入框。
原来的代码:
<script type="text/javascript" language="javascript" for="document" event="onkeydown">
//把Enter键转换为TAB键
if(event.keyCode==13 && event.srcElement.type=='text')
{
event.keyCode=9;
}
</script>-------------------------------------------------------------------------------------------------------
现在用户要求,两种情况:
1.如果位数没有输满,按回车跳到下一个输入框。这个我知道如何实现。
2.如果位数输满,不要回车,就直接跳到下一个输入框。例如上面maxlenth="2",用户输了两位数据后,直接跳到下一个输入框。对于第二种情况,我不知道如何做?因为不能把用户输入的键值转换为Enter! 是不是附加一个事件出来?
如果到2了。
就document.getElementById('第二个文本框').focus();
页面上有四百多个输入框,如果使用getElementById('第二个文本框'),要写死人。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
</head>
<body>
<input type="text" id="SiteTextBox" maxlength="2" />
<input type="text" id="txt" />
</body>
</html>
<script>
$(function () {
$("#SiteTextBox").keyup(function () {
if ($("#SiteTextBox").val().length == 2) {
$("#txt").focus();
}
});
});
</script>
<script>
$(function () {
//跟id为SiteTextBox的文本框,绑定键盘离开事件
$("#SiteTextBox").keyup(function () {
//判断用户输入的内容的长度。
if ($("#SiteTextBox").val().length == 2) {
//获取光标
$("#txt").focus();
}
});
});
</script>
<head>
<title></title>
<script type="text/javascript">
function nextIptFocus(obj){
if(obj.value.length>=2)
document.getElementById("txt").focus();
}
</script>
</head>
<body>
<input type="text" id="SiteTextBox" maxlength="2" onkeyup="nextIptFocus(this)"/>
<input type="text" id="txt" />
</body>
</html>
难就难在这里,怎么跳到下一个。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>dhtml.AutoFocusSwitch.html</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="generator" content="editplus" />
<meta name="author" content="[email protected]" />
<meta name="keywords" content="" />
<meta name="description" content="" />
</head><body>
<table>
<tr>
<td>指标一:</td>
<td><input type="text" maxlength="2" /></td>
</tr>
<tr>
<td>指标二:</td>
<td><input type="text" maxlength="10" /></td>
</tr>
<tr>
<td>指标三:</td>
<td><input type="text" maxlength="5" /></td>
</tr>
<tr>
<td>指标四:</td>
<td><input type="text" maxlength="2" /></td>
</tr>
</table>
</body>
<script type="text/javascript">
<!--function GetAllTextBox() {
var inputs = document.getElementsByTagName("input");
var tbxArray = new Array();
var len = inputs.length;
for (var i=0; i<len; i++)
{
if (inputs[i].type == "text")
tbxArray.push(inputs[i]);
}
return tbxArray;
}var tbxArray = GetAllTextBox();
var len = tbxArray.length - 1;
for (var i=0; i<len; i++)
{
tbxArray[i].NextTextBox = tbxArray[i+1];
tbxArray[i].onkeyup = function() {
if(((this.value.length == this.maxLength) || (event.keyCode==13))
&& this.NextTextBox)
{
this.NextTextBox.focus();
}
};
}
//-->
</script>
</html>
你是怎么定义这几百个文本框的ID的
难道不是SiteTextBox_1到SiteTextBox_400类似这样的?
//判断按?是否? -->
if(code_value==39){
for(var i=obj.parentNode.parentNode.cellIndex;i<obj.parentNode.parentNode.parentNode.childNodes.length;i++){
var next=obj.parentNode.parentNode.parentNode.childNodes[i+1].childNodes[0].childNodes[0];if(next.nodeType!=3&&next.type!="checkbox"){ break;
}//如果是最后一个text,判断是否到了最后一个节点
if(next.parentNode.parentNode.cellIndex==(obj.parentNode.parentNode.parentNode.childNodes.length-1)){
//进入下一行继续循环遍历;
for(var j=0;j<obj.parentNode.parentNode.parentNode.childNodes.length;j++){
var row=obj.parentNode.parentNode.parentNode.rowIndex+1;//当前行的下一行
//判断该列的第一个节点是否有孩子节点(因为页面的text固定格式为<td><div><text></div><td>)
if(obj.parentNode.parentNode.parentNode.parentNode.rows[row].cells[j].childNodes[0].hasChildNodes()){
next=obj.parentNode.parentNode.parentNode.parentNode.rows[row].cells[j].childNodes[0].childNodes[0];
//alert(next.parentNode.id);
//判断是否是一行文本(一行字)或者该节点是否是一个checkbox
if(next.nodeType!=3&&next.type!="checkbox"){
//alert("!!");
break;
}
}
}
next.focus();
}}next.focus();
}
//左移
if(code_value==37){
for(var i=obj.parentNode.parentNode.cellIndex;i>0;i--){
if(obj.parentNode.parentNode.parentNode.childNodes[i-1].childNodes[0].hasChildNodes()){
var next=obj.parentNode.parentNode.parentNode.childNodes[i-1].childNodes[0].childNodes[0];
var index=obj.parentNode.parentNode.parentNode.childNodes[i-1].cellIndex;
if(next.nodeType!=3&&next.type!="checkbox"){ break;
}
}
//判断是否已经遍历到了该行的第一个节点;如果是,则从上一行最后一个节点开始找;
if(obj.parentNode.parentNode.parentNode.childNodes[i-1].cellIndex==0){
//alert("");
for(var j=obj.parentNode.parentNode.parentNode.childNodes.length-1;j>0;j--){
var row=obj.parentNode.parentNode.parentNode.rowIndex-1;//当前行的上一行
//判断该列的第一个节点是否有孩子节点(因为页面的text固定格式为<td><div><text></div><td>)
if(obj.parentNode.parentNode.parentNode.parentNode.rows[row].cells[j].childNodes[0].hasChildNodes()){
next=obj.parentNode.parentNode.parentNode.parentNode.rows[row].cells[j].childNodes[0].childNodes[0];
//alert(next.parentNode.id);
//判断是否是一行文本(一行字)或者该节点是否是一个checkbox
if(next.nodeType!=3&&next.type!="checkbox"){
//alert("!!");
break;
}
}
}
next.focus();
}
}
next.focus();
}
//上移
if(code_value==38){ var i=obj.parentNode.parentNode.cellIndex;//单元格所在列数
var row=obj.parentNode.parentNode.parentNode.rowIndex-1; //上移后单元格所在行数
if(row>0){ var next=obj.parentNode.parentNode.parentNode.parentNode.rows[row].childNodes[i].childNodes[0].childNodes[0];
}
next.focus();
}
//下移
if(code_value==40){
var i=obj.parentNode.parentNode.cellIndex;
var row=obj.parentNode.parentNode.parentNode.rowIndex+1;
if(row!=obj.parentNode.parentNode.parentNode.parentNode.rows.length ){
var next=obj.parentNode.parentNode.parentNode.parentNode.rows[row].childNodes[i].childNodes[0].childNodes[0];
}
next.focus();
}
} 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/java_pengjin/archive/2010/11/09/5997427.aspx
先在你的文本框上设置它的tabIndex属性(按顺序来),当你输入2位后就触发一个事件,该事件用于模拟敲击键盘tab键。这样焦点就会跳到下一个文本框了。
该午休了,等有时间试下,看能不能行得同。。