JavaScript用于浮点数和整数验证

时间:2012-02-17 10:33:10

标签: javascript validation floating-point integer

我尝试从文本框向validate integer values创建一个javascript函数。验证它的最佳方法是什么,只有integer and float值可以接受?

用于数字验证的必需java脚本函数。

5 个答案:

答案 0 :(得分:6)

// remove whitespaces
var input = input.replace(/\s+/g,"");

// check if the input is a valid number
if(isFinite(input) && input != ''){
  // do your thing
}

请记住,isFinite只接受像'20 .50'这样的值而不是'20,50',这在某些国家/地区是自定义的。如果您需要这种灵活性,则需要进行额外的字符串预处理。使用此解决方案,只允许空格为千位分隔符(例如“100 000”)。

不幸的是,检查空字符串是必要的,因为isFinite('')返回true。

您也可以使用用户CMS中的此功能(有关详细说明,请参阅:Validate decimal numbers in JavaScript - IsNumeric()

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

答案 1 :(得分:1)

JavaScript有一个内置函数,isNaN(text)。只需将文本框的文本传递给此函数即可获得布尔结果。

答案 2 :(得分:1)

我在javascript中进行数字验证的最佳解决方案。

function isFloat(evt) {

var charCode = (event.which) ? event.which : event.keyCode;
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
    alert('Please enter only no or float value');
    return false;
}
else {
    //if dot sign entered more than once then don't allow to enter dot sign again. 46 is the code for dot sign
    var parts = evt.srcElement.value.split('.');
    if (parts.length > 1 && charCode == 46)
      {
        return false;
      }


    return true;

}

}

只需复制并过去javascript代码,然后像这样应用到你的文本框onkeypress ..

<input type="text" onkeypress="return isFloat(event)"  />

答案 3 :(得分:1)

onload =function(){ 
  var ele = document.querySelectorAll('.number-only')[0];
  ele.onkeypress = function(e) {
     if(isNaN(this.value+""+String.fromCharCode(e.charCode)))
        return false;
  }
  ele.onpaste = function(e){
     e.preventDefault();
  }
}
<input class="number-only" type=text />

答案 4 :(得分:0)

var valid =!isNaN(value); 例如:

!isNaN('0'); // true
!isNaN('34.56'); // true
!isNaN('.34'); // true
!isNaN('-34'); // true
!isNaN('foo'); // false
!isNaN('08'); // true

!isNaN(''), !isNaN(' '), !isNaN('\n\t')等都是真的!

空白测试+ isNaN FTW:

var valid = !/^\s*$/.test(value) && !isNaN(value);