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()メソッドを見てください。

on keypressのようなことを実行してname.match(/^[A-Z][a-z]* [A-Z]$/)、name に大文字の後に任意の数の小文字が続き、その後にスペースと別の大文字が続くかどうかを判断できます。

ただし、「Jr」のような役職や、「Da Silva」のようなスペースを含む姓や「O'Malley」のようなアポストロフィを含む姓など、条件に問題が発生する可能性があることに注意してください。人の名前の多くの特殊なケースに対応するのは難しい場合があります。

于 2012-10-16T12:31:59.497 に答える