防止用户使用JS / jQuery在输入中键入多个字符

时间:2018-06-29 07:09:55

标签: javascript jquery

我正在尝试编写一个函数,该函数可防止用户在输入中键入多个字符。基本上,每次用户按下任何键时,该功能都会检查输入值的长度,如果该值大于1,则会将输入值设置为键入单词的第一个字符。这段代码会奏效吗,如果没有,它将是什么样子? (正如我在标题中提到的,我也在使用jQuery):

function keepOneLetter(){
 $("input[type='text']").keypress(function(event){
    if($("input[type='text']").val().length > 1){
        $(input[type='text']).val() = $(input[type='text']).val($(this).val()[0])
    }
}) }

更新

已建议将其复制为this one。好吧,可能是这样的,因为:

  1. 当我在搜索栏中键入标题(防止用户使用JS / jQuery在输入中键入多个字符)时,没有弹出任何结果,因为我提到了JavaScript和jQuery,而第一个问题根本没有提到。
  2. 说到JS / jQuery,如果比较标签,您会注意到,我使用了 javascript jquery 标签,而另一个问题是 html 表格输入文本框,因此,如果您要查找有关的帖子,那么可以说 javascript ,您将找不到原始帖子
  3. 最终,我坚持使用HTML解决方案,因为它根本不需要JS,并且比自己编写整个函数要快得多。嗯,有一个答案,有人在编写函数时就象我最初想要的那样,它也起作用了,但是可能是由于选择了html解决方案,Stack Overflow认为,我只是看了前面提到的问题,认为是最好的解决方案由上述问题的作者撰写,与我的问题的最佳解决方案非常相似。
  4. 使用HTML是可选的,这取决于您,是坚持使用纯JavaScript,jQuery之类的库,还是仅保留HTML。就像我说的,我使用HTML,因为它速度更快。但是我也可以使用功能。

2 个答案:

答案 0 :(得分:4)

maxlength呢?

<input type="text" name="letter" maxlength="1">

这不是javascript,但是用更少的代码效果更好。

答案 1 :(得分:0)

尝试以下代码:

$('.onealphaonly').bind('keyup', function() { 
    const node = $(this);
    node.val(node.val().replace(/^([a-zA-Z]).*/g, '$1'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="onealphaonly"/>