0

我有一个 javascript 代码,可以让我自动从一个表单域跳到下一个域。

它使用固定长度的字段工作。

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

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

我想在可变长度字段中使用它。我的字段由 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>
4

1 回答 1

1

与其先检测一个空格然后再检测一个字母,不如看看string.match()方法。

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

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

于 2012-10-16T12:31:59.497 回答