2013-11-14 54 views
0

我正在研究限制字符數的函數。用戶被允許在輸入文本字段內輸入。將「onselect」事件綁定到處理最大字符數的函數。在輸入文本字段內

這是它:

$.fn.restringLength = function (id, maxLen) { 

      $(id).keypress(function(e){ 

       var kCode = e.keyCode ? e.keyCode : e.which, 

        len = $(id).val().length; 

       if (kCode != 8 && kCode != 46) { 

        if (len > maxLen) e.preventDefault(); 
       } 
      }); 
     } 

功能綁定按鍵事件,並得到按下的鍵的代碼。

如果焦炭。達到限制,它只允許按下刪除鍵和退格鍵。

什麼它需要工作的偉大,是爲了有以下行爲綁定「ONSELECT」事件的方式:

當用戶選擇用鼠標整個文本和類型的信件或一個數字,整個文本被刪除,並出現該字母。

這是什麼,當我們要替換一些文本與另一個我們大多數人做的,我想我的功能,使這一點。

任何想法如何?

+0

什麼只是'' – adeneo

+0

@adeneo - 從來沒有使用過,它是跨瀏覽器? IE8,也許更低? –

+0

在輸入上,它應該可以在任何地方工作,在textarea上,舊版瀏覽器會出現問題。 – adeneo

回答

0

如果我可以補充一下,

您的解決方案使用的按鍵事件,因此該事件被之前觸發輸入的新值計算。這就是爲什麼你必須檢查像backspace這樣的特殊鍵,請輸入 ...這些論文不只是給字符串添加一個字符,所以需要特殊處理。

對於這種類型的處理,讓處理器在之後觸發來處理字符串計算更爲方便。這樣,您可以訪問輸入值並在不正確的情況下對其進行修改。

不幸的是jQuery的不支持這項活動,但你可以用香草JavaScript方法使用它。

$(id)[0] // get the vanilla js element 
.oninput = function(e){ 
    this.value = this.value.substr(0 , 10) // this.value contain the string after the key press processing 
} 
相關問題