如何将文本输入限制为仅限数字,但允许使用10键的数字?

时间:2016-02-04 16:01:02

标签: jquery regex format

我很困惑,为什么我无法使用10键输入数字。

以下示例自动填充“/”。我尝试了几种不同的方法来调整正则表达式,但是当我这样做时,我不能退格或删除任何超过最后一个“/”的内容。 (01/01/2000 ... 01/01 /< - 不允许我删除这个)。

       $('#date').keydown(function (e) {
            var key = e.charCode || e.keyCode || 0;
            $date = $(this);

            if (key !== 8) {
                var regex = new RegExp("^[0-9\t/]");
                var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
                if (!regex.test(key)) {
                   event.preventDefault();
                   return false;
                }

                if ($date.val().length === 0) {
                    $date.val($date.val() + '');
                }
                if ($date.val().length === 2) {
                    $date.val($date.val() + '/');
                }
                if ($date.val().length === 5) {
                    $date.val($date.val() + '/');
                }
            }
        }); 

请帮我找到一种方法,继续像现在一样自动格式化“/”,但仅限于数字(除了必需的“/”),并允许我使用10个键编号。

非常感谢任何帮助。

提前谢谢。

2 个答案:

答案 0 :(得分:2)

如果你想只允许号码而忽略任何键: 在JavaScript代码中使用此代码:

public final class NestedCustomView extends FrameLayout {
    public NestedCustomView(Context context) {
        super(context);
        LayoutInflater.from(context).inflate(R.layout.view_nested_item, this);
    }
} 

并且您要应用此角色的任何输入都会添加以下属性:

 $('*[data-validation="digit"]').keydown(function (e) {
                if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
                        (e.keyCode == 65 && e.ctrlKey === true) ||
                        (e.keyCode >= 35 && e.keyCode <= 40)) {
                    return;
                }
                if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
                    e.preventDefault();
                }
            });

例如:

data-validation="digit"

我建议你使用Masked Input插件,例如: Masked Input plugin for jQuery

例如日期:

<input data-validation="digit" /> 

在此插件中,您可以组合使用单词和数字或任何字符

答案 1 :(得分:0)

您没有正确检查退格。 检查&#39;键&#39;。

的值

我认为它应该分配如下:

var key = e.keyCode;

另外,为什么e的一半以及之后的event为什么?

var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);

这对JS引用也很有用:

https://css-tricks.com/snippets/javascript/javascript-keycodes/

您可能还想使用jQuery&#39; which。它应该适用于各种浏览器。

相关问题