javascript autojump到下一个表单字段

时间:2012-10-16 12:09:05

标签: javascript forms focus

我有一个javascript代码,允许我自动从表单字段跳转到下一个。

它使用固定的长度字段。

示例:字段TIME只能是4个数字,因此当用户输入第4个数字时,脚本将重点关注下一个字段。

它工作正常,但我想添加一个功能。

我想在变量lenght字段中使用它。我的字段由LASTNAME(空格)FIRSTNAME的第一个字母组成。

示例:John Doe将被输入为“Doe J”

我能想到的唯一技巧是在按下空格+输入另一个角色时使场移位。这是唯一允许使用变量长度姓氏的任意组合执行函数的重复模式。

那么,任何想法如何实现它?我是js的初学者!这是原始代码:

<SCRIPT TYPE="text/javascript">
<!--
var downStrokeField;
function autojump(fieldName,nextFieldName,fakemaxlength)
{
    var myForm=document.forms[document.forms.length - 1];
    var myField=myForm.elements[fieldName];
    myField.nextField=myForm.elements[nextFieldName];

    if (myField.maxlength == null)
       myField.maxlength=fakemaxlength;

    myField.onkeydown=autojump_keyDown;
    myField.onkeyup=autojump_keyUp;
}

function autojump_keyDown()
{
    this.beforeLength=this.value.length;
    downStrokeField=this;
}

function autojump_keyUp()
{
    if (
           (this == downStrokeField) && 
           (this.value.length > this.beforeLength) && 
           (this.value.length >= this.maxlength)
       )
           this.nextField.focus();
           downStrokeField=null;
}
//-->
</SCRIPT>

1 个答案:

答案 0 :(得分:1)

不是检测空格然后检查字母,而是查看string.match()方法。

您可以在按键上执行类似name.match(/^[A-Z][a-z]* [A-Z]$/)的操作,以确定姓名是否包含大写字母,后跟任意数量的小写字母,后跟空格和另一个大写字母。

但是,请注意,您可能会遇到与您的标准有关的问题,例如标题为'Jr'的人,或者有空格的姓氏,例如“Da Silva”或撇号,如“O'Malley” 。容纳人们名字中的许多特殊情况可能很棘手。