2013-12-23 36 views
0

在使用查詢函數後,文本字段浮點數不起作用。在這裏我使用了數字的函數。這意味着用戶只能輸入數字。Jquery漂浮點不起作用

$(".number-field").keypress(function(e) 
    { 
    var code = e.which || e.keyCode; 

    if((code >= 48 && code <= 57) || code == 8){ 
    console.debug(code); 
    } 
    else { 
    return false; 
    } 
    }); 

這裏浮點不工作,我該如何解決它?

+0

這將是巨大的,如果你能詳細闡述您的問題。 –

+1

準確地回答你的問題,以便你能很快得到正確答案。 – sms

回答

1

嘗試這個 -

$(".number-field").keypress(function(e) 
     { 
      var code = e.which || e.keyCode; 

       if((code >= 48 && code <= 57) || code == 8 || code == 46|| code==110){ 
       console.debug(code); 
       } 
       else { 
       return false; 
       } 
     }); 

這裏110小數點。對於details.see此鏈接的WWW。 cambiaresearch.com/articles/15/javascript-char-codes-key-codes

+0

在此代碼中,他使用了Javascript char代碼。這裏48表示0和57表示9.這意味着當用戶輸入字段時,用戶不能輸入任何字符或浮點數。用戶必須輸入0-9 。這裏的浮點數需要一個額外的Char代碼,爲110. 有關詳細信息,請參閱此鏈接www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes –

+0

我可能建議更換這些「幻數」通過在前面定義常量? 'var CHAR_0 =「0」.charCodeAt(0)'等等。 –

1

那麼,你明確禁止除數字和退格鍵外的所有按鍵,這意味着你明確禁止.(或,,這取決於你的文化)。所以不要這樣做。 .是代碼46. ,是代碼44.您應該可以修改if以允許相關的代碼。如果你想允許負數,你可以考慮允許-。 (簡單的方法來找出最可打印字符的代碼:將這個在控制檯:"-".charCodeAt(0)

2

這不是jQuery甚至JavaScript的任務。您可以使用HTML5's step attribute

<input type="number" step="0.001" /> 

調整到你想要多少個小數位,讓 - 上面最多允許千分之一指定。

另外,允許任意長度的數字與可選的千分離器,試試這個:

<input type="text" pattern="[+-]?(\d{1,3}(,\d{3})*|\d*)(\.\d+)?" /> 

但是請記住,這個解決方案不是語言環境感知,因此,例如在地方,是小數點分隔符,這個輸入不會像用戶預期的那樣工作。相同的地方'是千位分隔符。

請注意,一般情況下,您不應該限制用戶輸入。讓他們輸入任何他們想要的,然後嘗試驗證它。

+0

+1爲*「請注意,總的來說......」*對於'step',也許在2017年或2018年,它將得到足夠好的支持來實際使用它。 :-) –

+1

@ T.J.Crowder它支持所有瀏覽器。只有通過禁用Windows Update才能使我們的生活變得艱難的人們不會工作;) –

+0

@ Niet:當IE版本開始支持它時? (並且不要打折在Windows XP上無法通過IE8的人。) –

0

試試這個,

$(".number-field2").keypress(function(e){ 
    var code = e.which || e.keyCode; 
    if((code >= 48 && code <= 57) || code == 8 
       || code == 46){ // for . 
     console.debug(code); 
    } 
    else { 
     return false; 
    } 
});