仅允许输入中的数字和“K”字符

时间:2018-03-08 16:36:44

标签: javascript html function input numbers

我有一个Javascript函数,只允许输入中的数字。

<input name="onlynumbers" type="text" onkeypress="return isNumber(event);">

这是我的Javascript功能:

function isNumber(e) {
            k = (document.all) ? e.keyCode : e.which;
            if (k==8 || k==0) return true;
            search = /[0-9]/;
            n = String.fromCharCode(k);
            return search.test(n);
        }

但现在我需要允许数字和“K”字符。我试图修改它,但我无法得到它。

请你帮帮我吗?

谢谢! :)

3 个答案:

答案 0 :(得分:1)

将K添加到搜索中:

search = /[0-9K]/;

如果你还需要小写k:

search = /[0-9kK]/;

答案 1 :(得分:0)

在获取数字击键方面,我一直在使用这个我最初没有创建的功能,但是找到了某个地方:

function blockNonnumericKeystrokes(e) {
    if (e.keyCode == '13') {
        prorate();
        return;
    }
        // Allow: backspace, delete, tab, escape, enter and .
        if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
             // Allow: Ctrl+A
            (e.keyCode == 65 && e.ctrlKey === true) || 
             // Allow: home, end, left, right
            (e.keyCode >= 35 && e.keyCode <= 39)) {
                 // let it happen, don't do anything
                 return;
        }
        // Ensure that it is a number and stop the keypress
        if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
            e.preventDefault();
        }
    }

答案 2 :(得分:0)

  • 您可以使用此正则表达式/\d+|k/i - 正则表达式接受kK,如果您只需要数字和大写K,则删除incase sensitive flag i/\d+|k/

  • 属性e.key是按下的键

&#13;
&#13;
document.querySelector('[name="onlynumbers"]').addEventListener('keypress', function(e) {
  if (!/\d+|k/i.test(e.key)) e.preventDefault();
});
&#13;
<input name="onlynumbers" type="text">
&#13;
&#13;
&#13;

资源