繁体   English   中英

使用JavaScript检测输入的字符

[英]Detect entered character with JavaScript

当用户键入“ @”时,我想开始一个操作(启用自动完成功能)。 我有可用的jQuery。

通常在QWERTY键盘上是这样的:

$('textarea').live('keydown', function(e) {
  if (e.which === 50) {
    console.log('@ has been entered.');
  }
});

但是,它在AZERTY键盘上无法正常工作。 键码= 50对应于E〜/ 2键。 要在AZERTY键盘中键入“ @”,请使用AltGr + à @ / 0键。

编辑:当输入@时,自动填充才会开始,并且仅在此之后。 例如,当有人输入“ Hello @”时,它将启动,但是当他键入“ Hello @nothing else”时,完整输入将不会执行任何操作。 示例: http : //mrkipling.github.com/jQuery-at-username/ (仅在QWERTY键盘上有效)。

使用keypress而不是keydown 虽然keydown涉及一种键的每个压, keypress涉及翻译的字符,所以例如a可以是不同的a ,而变速键被按下时,由字符工作,死键工作,并在键盘映射其他差异的处理。

如何检查@是否输入为字段值的最后一个字符?

$("body").on("keyup", "textarea", function(e) {
    if (this.value.indexOf("@") == this.value.length - 1) {
        console.log("Starting autocomplete");
    }
});​

演示: http : //jsfiddle.net/FKhPW/2/

想到的唯一其他选择是计时器,用于检查文本输入的内容。

var patt=new RegExp(/^@/);
var charCheck = setInterval(function(){
  if (patt.test($("#textInput").val())){
    // initiate autocomplete
  }
},100);

此代码将检查#textInput元素的内容,并查看它是否与字符串开头的@符号的正则表达式匹配。 如果是这样,则test()函数的评估结果为true,您可以启动自动完成代码。

在这里,您可以进行工作演示: http : //jsfiddle.net/LxpQQ/

从我以前的回复:

jQuery使用“ @”自动完成

希望它适合你的原因:)

source: function(request, response) {
            if (request.term.indexOf("@") >= 0) {
                $("#loading").show();
                getTags(extractLast(request.term), function(data) {
                    response($.map(data.tags, function(el) {
                        return {
                            value: el.name,
                            count: el.count
                        }
                    }));
                    $("#loading").hide();                    
                });
            }
        },

使用event.key和现代JS,直接检查@

没有数字代码了。 您可以直接检查密钥。

const input = document.getElementById("textarea");
input.addEventListener("keydown", function (event) {
    if (event.key === "@") {
        // Do something
    }
});

Mozilla文件

支持的浏览器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM