限制数字文本框html中的指数和句点(。)

时间:2016-07-29 07:17:28

标签: javascript jquery html

我有一个数字文本框,默认情况下,数字文本框允许使用Exponents和句点。 我该如何限制?

我能想到的一种方法是在输入事件中使用string.replace但是它没有按预期工作。以下是我的代码..

HTML

     <input type='number' class='number'>

的JavaScript

     $(".number").on('input', function () {
            this.value = this.value.replace(/e|E|\./g, ''); // Remove e, E, and period(.)
            if (this.value.length > 4) {
                this.value = this.value.slice(0, 4);
            }
        });

当我输入字符串&#39; 2e&#39;在文本框中,如果运行上面的代码,则会删除整个输入。我只是想从输入字符串而不是整个输入中删除e,E或句点。

有没有办法实现这一目标。

JSfiddle

回答BY nichel 就像魅力一样,现在我的问题是我如何在PASTE事件中限制它。?

2 个答案:

答案 0 :(得分:0)

所以基本上你想只允许数字?然后通过键码和键限制键。去除粘贴上多余的字符

$(".number").keypress(function(e){
   return e.keyCode>47&&e.keyCode<58;
}).paste(function(){
   $(this).val($(this).val().replace(/\D/g,''));
})

由于您希望最大长度为4,因此只需添加max="9999"

<input type='number' class='number' max="9999">

答案 1 :(得分:0)

如果输入值无效,

input[type=number]将返回""(空字符串)。

您可以参考this帖子了解更多信息。

我建议您改用input[type=tel]。它还具有maxLength属性,因此您无需担心修剪额外的值。

您甚至可以将正则表达式替换为/[^0-9]/。这将替换除数字之外的所有字符。

Sample Fiddle

所以你最终的代码看起来像是:JSFiddle