【问题标题】:Numeric validation with jQuery使用 jQuery 进行数值验证
【发布时间】:2015-01-14 19:16:00
【问题描述】:

为了验证输入字段是否包含数值,我使用了 jQuery 的 isNumeric() 方法:

$.isNumeric(value);

这适用于大多数情况,但以下示例失败:

$.isNumeric("0.");

如果不是数值,则返回 true。

有没有更好的方法在不使用任何其他插件的情况下进行此类验证?

谢谢。

【问题讨论】:

标签: jquery validation numeric


【解决方案1】:

您尚未列出所有用例,但我在控制台中浏览了几个,包括您的重大案例;

您可以简单地将字符串转换为 JavaScript 数字:

$.isNumeric(Number("0."))
=> true

而且它似乎也适用于不是数字的字符串。

$.isNumeric(Number("fasd"))
=> false

修改:

$.isNumeric(Number(0.))
=> true

$.isNumeric(Number(.0))
=> true

另外,如果您的数据库不喜欢“0”。然后投射东西:

Number(0.)
=> 0

Number(.0)
=> 0

Number(".0")
=> 0

Number("0.")
=> 0

如果此解决方案不能解决您的问题,请告诉我。干杯!

【讨论】:

  • 抱歉,没有。我存储值的数据结构不接受“0”。或“.0”作为有效的数字类型,所以我想防止这种情况发生。
  • 您的问题似乎是在询问如何查询字符串以获取数字状态。
【解决方案2】:

试试下面的代码。

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

例子:

var matches = val.match(/\d+/g);
if (matches != null) {
    alert('number');
}

【讨论】:

    【解决方案3】:

    如果你想要检查类型,你可以使用jQuery.type():

    console.log(jQuery.type( "0." ) === "number");// False
    console.log(jQuery.type( 0. ) === "number");// True
    

    为了完整起见,使用这种类型的方法,您可以这样检查数字:

    var isNumber = function(o) {
        return typeof o === 'number' && isFinite(o);
    }
    

    顺便说一句,0..0 是 javascript 中的有效数字格式。

    【讨论】:

    • 不,我正在寻找一种通用的方法来验证数值 - 整数和小数。
    • 我存储值的数据结构不接受“0”。或“.0”作为有效的数字类型,所以我想防止这种情况发生。
    【解决方案4】:

    以下是我的解决方案:

    !$.isNumeric(value) || value.substring(value.length - 1) == "." || value.substring(0, 1) == "."
    

    如果结果为 false - 该值不是数字,包括 5. 和 .5,它们是 JavaScript 中的有效数字值。

    感谢大家的意见。

    【讨论】:

      猜你喜欢
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多