【问题标题】:JavaScript for float and integer number validation用于浮点数和整数验证的 JavaScript
【发布时间】:2012-03-08 18:12:18
【问题描述】:

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

号码验证所需的 java 脚本函数。

【问题讨论】:

标签: javascript validation floating-point integer


【解决方案1】:
// 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);
}

【讨论】:

    【解决方案2】:

    对我来说,在 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)"  />
    

    【讨论】:

    • 点号的 charCode 是 190 而不是 46
    • 让我更正我之前评论的内容:charCode 是 46 onkeypress 和 190 onkeydown。 Keypress 已弃用并避免使用它。更多这里developer.mozilla.org/en-US/docs/Web/API/Document/…
    • @DanielChikaka 另外,退格键值是 8
    【解决方案3】:

    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();
      }
    }
    &lt;input class="number-only" type=text /&gt;

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        var 有效 = !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);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-22
          • 2023-04-07
          • 1970-01-01
          • 2021-12-21
          • 2021-04-19
          • 2016-02-08
          • 1970-01-01
          • 2011-01-04
          相关资源
          最近更新 更多