2013-10-11 69 views
3

我正在爲我們的客戶端項目創建一個腳本,當您爲特定輸入點擊最大字符數時,它將自動標記到下一個輸入字段。出於某種原因,輸入值返回的值比它應該小一些,因此當在「閾值」之上輸入一個額外的字符時,將其標記爲「下一個」輸入。輸入值onkeydown返回不正確的值(少一個)

這裏是我的腳本來觀看輸入值 - OFC,如果有更好的辦法請大家指教:) -

var watchLength = function (watch) { 
    watch.onkeypress = function() { 
     var nextInput = getNextSibling(this); 
     console.log(this.getAttribute('data-autotab-length')); 
     console.log(this.value.length); 
     if (this.value.length == this.getAttribute('data-autotab-length')) { 
      nextInput.focus(); 
      console.log('Limit reached here'); 
     } 
    }; 
}; 

而一個的jsfiddle到工作投入。第一個輸入被限制爲'2'字符,但是當你輸入3時,它會跳轉到下一個輸入。我認爲這與keypress/keydown事件沒有讀取初始值有關,但我不知道如何解決它。任何幫助真的很感激。

我登錄控制檯結果:

http://jsfiddle.net/qdnCZ/

回答

1

的問題是,你希望它之前onkeypress將閃光。您可以簡單地將onkeypress替換爲onkeyup,這樣可以確保<input>元素value在您檢查它時正確設置。

參見:http://jsfiddle.net/qdnCZ/1/

+0

媽的,總是這麼簡單的東西:)!非常感謝你。 – Halcyon991

+0

不要提及它。 – jAndy

0

是的,它會返回一個都不能少,只是在長度檢查,請使用+1。這是因爲onkeypress事件在字段更新之前執行,這意味着使用e.preventDefault()字母不會出現在字段中。否則,您可以使用onkeyup

0

使用onkeyup代替onkeypress

onkeyup後場被炒魷魚得到更新

0
if (this.value.length == this.getAttribute('data-autotab-length')) { 
       nextInput.focus(); 
       console.log('Limit reached here'); 
       return false; // this is prevent the third value being entered 
      } 

Updated fiddle