【问题标题】:Not allowing to add or update any numeric or decimal value once it reach upto two decimal一旦达到小数点后两位,不允许添加或更新任何数字或十进制值
【发布时间】:2015-04-21 18:26:27
【问题描述】:

我需要限制用户做以下事情:

1) 只允许数字 2) 十进制最多 2 位 3) 允许 - 退格、制表符、删除按钮

以下代码工作正常,除了一种情况, 问题是,(示例)当文本框输入达到6545.12 然后尝试更改值如下65457.127545.13 然后它不允许并且只是限制我。 (所以,在这里,不允许在. 之前或. 之后添加新数字或更改现有数字)

谁能指导我如何解决这个问题。

在文本框的keypress 事件上调用下面的函数。

        function isNumber(evt, element) {

        var charCode = (evt.which) ? evt.which : event.keyCode

        if (
          &&      // “-” CHECK MINUS, AND ONLY ONE.
            (charCode != 8) && (charCode != 9) && (charCode != 37) && (charCode != 39) &&
            (charCode != 46 || $(element).val().indexOf('.') != -1) &&      // “.” CHECK DOT, AND ONLY ONE.
            (charCode < 48 || charCode > 57)) {

            return false;
        }
        if ($(element).val().indexOf('.') != -1)
        {
            var index = $(element).val().indexOf('.');
            var len = $(element).val().length;
            var CharAfterdot = (len + 1) - index;

            if (CharAfterdot <= 3) {
                return true;
            }
            else {
                return false;
            }


        }
        return true;
    }

【问题讨论】:

  • 不要处理事件,检查新值是否合适,如果不合适,将输入值设置为旧值。
  • 你能分享任何例子吗。

标签: javascript jquery validation


【解决方案1】:

您可以考虑包含一个实现输入屏蔽的库(即只允许将某些类型的值输入到输入字段中)。使用像 https://github.com/RobinHerbots/jquery.inputmask 这样的库,您可以将正则表达式指定为掩码。 [0-9]+(\.[0-9][0-9]?)? 是一个只允许最多两位小数的正则表达式示例。包含掩码库后,您可以直接在元素上调用掩码,也可以在输入中添加data-inputmask-regex 属性。请参阅https://github.com/RobinHerbots/jquery.inputmask#usage 了解更多信息。

短版:这是一个难题,其他人已经完成了这项工作。

【讨论】:

    猜你喜欢
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多