2012-06-28 3 views
0

Я использую следующий скрипт для десятичной проверки. Мне нужно ввести только числа и точечный символ, например, только 123.00. Следующая функция не поддерживает буквы, которые отлично. Но это не позволяет ввести точку (.) символ тоже? Как ввести символ точки с помощью этой функции?Десятичная проверка в JavaScript

function isNumberKey(evt) 
     { 
     var charCode = (evt.which) ? evt.which : event.keyCode 
     if (charCode > 31 && (charCode < 48 || charCode > 57)) 
      return false; 
     else 
     return true; 
     } 
+0

будет полезно фотографии .. http://stackoverflow.com/questions/10023845/regex-in-javascript-for -validating-decimal-number –

ответ

1
function isNumberKey(evt) 
     { 
      var charCode = (evt.which) ? evt.which : event.keyCode 
      if (charCode != 46 && charCode > 31 
      && (charCode < 48 || charCode > 57)) 
      return false; 

      return true; 
     } 
+0

Это была хорошая работа. но его разрешить 123.23.45 ..... более одной точки. Как ограничить только одну точку. – User

+0

Дать идентификатор в поле ввода, а при проверке получить значение текстового поля и разделить на «.», если массив больше чем 2, а затем вернуть –

0

Используйте регулярные выражения, его более элегантный метод.

function isNumberKey(evt) 
     { 
     var charCode = (evt.which) ? evt.which : event.keyCode 
     if (charCode.match('/^[-+]?([0-9]*\.[0-9]+|[0-9]+)$/')) 
      return false; 
     else 
     return true; 
     } 
+0

Ошибка при выполнении Microsoft JScript. Объект не поддерживает это свойство или метод. – User

+0

Включили ли вы библиотеку jQuery? match() - это метод jQuery. –

+0

Генерация jQuery. = _ = – Leonid

0
function validateFloatKeyPress2(valor, presicion, event) { 
     var keyCode = (document.all) ? event.keyCode : event.which; 
     if (keyCode == 8) { 
      return true; 
     }    
     if (keyCode == 46 && valor.value.indexOf(".") >= 0) {    
      return false; 
     } 
     //Enable Only float values 
     if ((keyCode >= 48 && keyCode <= 57) || (keyCode == 46)) { 

      if (reverse(valor.value).indexOf(".") > (presicion - 1)) { 
       return false; 
      } 
      return true; 
     } 
     else { 
      return false; 
     } 
    } 

function reverse(s) { 
     var o = ''; 
     for (var i = s.length - 1; i >= 0; i--) 
      o += s[i]; 
     return o; 
    } 
+0

Принимает десятичные числа, для IE и Firefox – lgutierrez

0

Попробуйте это:

// Validating числовые поля

function validate(x) { 
    var decimal = /^[1-9][\.\d]*(,\d+)?$/; 
    if (x.match(decimal)) { 
     return true; 
    } else { 
     return false; 
    } 
} 

Также вы можете проверить метод parseFloat и возвращает NaN.

0

проверка Копание IsNaN() метод

вар а = 3,00003

IsNaN (а) будет возвращать ложные

уаг Ь = '3.0.0' IsNaN (б) возвращает истину

Я думаю, что этот метод решит вашу проблему.

0
 

     function checkDecimal(num){ 

     var chkDecimal= /^\d+\.\d{0,2}$/; 
     return chkDecimal.test(num); 

     } 

     alert(checkDecimal(0.2)) 
     alert(checkDecimal(1)) 

0

Комплексное решение для вашей проблемы

function isNumberKey(e) 
    { 
     var code = (code ? code : e.which);   
     if (code != 46 && code > 31 && (code < 48 || code > 57)) 
      return false; 
      //if it is (.) 
     else if (code == 46) { 
      var Value = this.value; 
      //if value already contains (.) character 
      if (Value.indexOf('.') != -1) { 
       var splt = Value.split('.'); 
       //if there is already(.) char then return false 
       if (splt.length >= 2) 
        return false; 
      } 
     } 
     return true; 
    } 
0
function IsNumeric(e) { 
     var keyCode = e.which ? e.which : e.keyCode; 
     var ret = ((keyCode == 46 || keyCode >= 48 && keyCode <= 57) || specialKeys.indexOf(keyCode) != -1); 
     return ret; 
} 
Смежные вопросы