2013-05-24 3 views
0

isnan() функция тоже принимаем. (Точки). Как их предотвратить. Это пример кода:isnan функция прием точек

 var Price = $("#Price").val();    
     if (Price == "") { 

      alert ("Required!"); 
     } 
     else if (isNaN(Price)) {    

      $("#Price").val(Price); 
      alert("Enter digits"); 

     } 

Я вызываю этот код JS в событии KeyUp текстового поля.

+0

это потому, что эта функция не заслуживает доверия. Эта функция нарушена. (Https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/isNaN#Description). Вы можете быть заинтересованы в ECMAScript 6 [Number.isNaN] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/isNaN): [** MDN **] (https: //developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/isNaN), так что используйте 'Number.isNaN (testValue)' –

ответ

2
else if (!/^\d+$/.test(Price)) { 
    // only digits 
} 
+1

, а крутая настройка - для предотвращения чисел, начинающихся с цифры '0' тоже – ajax333221

+2

@ ajax333221: это зависит от задачи. '00001' - действительное число. – zerkms

1

Вы можете проверить значение имеет номер по

function isNumber(obj) { 
    return isFinite(obj) && !isNaN(parseFloat(obj)); 
}; 
+0

Спасибо, как мы можем предотвратить ввод элемента в случае сбоя проверки в событии keyup. – Pearl

+0

вы можете отобразить предупреждающее сообщение под вводом или добавить класс * error * для ввода. –

0

Я нашел решение:

var Price = "10.00";    
if (Price == "") { 
alert ("Required!"); 
} 
else if(Price.search(".") != -1) 
{ 
    alert(" cannot insert dots!"); 
} 
else if (isNaN(Price)) {    
alert("Enter digits");  
} 

Здесь: http://jsfiddle.net/K8FUW/

0

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

else if(price.match(/^[0-9]+$/)){ 
//Valid number 
} 
Смежные вопросы