2012-10-16 23 views
0

我有一個javascript代碼,允許我從窗體域自動跳轉到下一個域。javascript自動跳轉到下一個表單域

它使用固定長度字段。

示例:field TIME可以只有4個數字,所以當用戶輸入第4個數字時,腳本將重點關注下一個字段。

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

我想在可變長度字段中使用它。我的字段由LASTNAME(空格)FIRSTNAME的第一個字母組成。

例子:張三將被分類爲「母鹿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

而不是檢測的空間中,然後一個字母,看看該string.match()方法。

您可以在按鍵上做一些類似name.match(/^[A-Z][a-z]* [A-Z]$/)的操作,以確定名稱是否包含大寫字母,後跟任意數量的小寫字母,後跟空格和另一個大寫字母。

但是,請注意,您可能會遇到與您的標準相關的問題,例如擁有像'Jr'這樣的標題的人,或者帶有空格的姓氏,如「Da Silva」或撇號,例如「O'Malley 」。容納人名中的許多特殊情況可能會非常棘手。

+0

好的我試過你的腳本,我認爲它會工作。現在我試圖實現它,但我是一個真正的初學者,當然它不工作..看看我的代碼是否對你有任何意義:http://jsfiddle.net/n2K27/ –

+0

看看這個[小提琴](http://jsfiddle.net/cordesmj/n2K27/2/)。這使用jquery爲picname輸入中的keyup事件分配一個函數,如果文本與正則表達式匹配,它將焦點發送到下一個輸入。由於你是JS的新手,需要一些研究來讓你理解,但它是值得的! –

+0

哦,還有,你拼錯了getElementById,你試圖在沒有id屬性的元素上使用它(name屬性不是同一件事)。此外,您的代碼沒有以任何方式附加到輸入。 –

相關問題