2013-12-23 3 views
0

В текстовом поле поплавок не работает после использования функции запроса. Здесь я использовал функцию для цифр. Это означает, что пользователь может вводить только цифры.JQuery float point не работает

$(".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

Попробуйте this-

$(".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.Here 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" /> 

Adjust сколько знаков после запятой вы хотите разрешить - выше позволяет до тысячных быть указан.

В качестве альтернативы, чтобы число произвольной длины с опциональными тысячи сепараторов, попробуйте следующее:

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

Однако имейте в виду, что это решение не локали-Aware, так, например, в тех местах, где , является десятичный разделитель, этот вход не будет работать, как может ожидать пользователь. То же самое для мест, где ' - это тысячный разделитель.

Обратите внимание, что в целом вы НИКОГДА не должны ограничивать ввод пользователя. Пусть они набирают все, что захотят, а затем попытаются подтвердить его впоследствии.

+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; 
    } 
});