输入 @ 后加一个字母后提醒 Jquery

alert after typing @ plus one more letter Jquery

我正在创建一个文本区域来创建帖子,如果我在其中键入 @ 再加一个字母,则会出现一个警报 (),它将被一个内联用户搜索栏取代,例如 twitter (我已经有了)。

  <textarea id=post></textarea>

       $(function() {
         $('#post').keyup(function() {
             if ( $(this).val().indexOf("@") > -1 ) {
                 alert("found");
              }
            });
      });

我正在使用这个功能,它识别 @ 但如果继续写其他东西,警报会继续出现。我想要的是在写入 @ 和另一个使内联搜索栏工作的字母后出现警报。

我为你做了一个片段。

这使用 "count" 检查文本区域中的字符数量是否发生变化。因为可以使用 "AltGr+2"(2 个按键)或 "Alt+64"(3 个按键)来制作“@”。下面的代码避免了可以用这种方式形成的 ASCII 字符的问题。

此外,我从 "lastChar" 而不是您的 indexOf("@") 进行了检查。这允许您在同一个文本区域中多次触发您的标签功能。

喜欢"Hey @Jean, I'm @NiMusco and hope it helps you"。

当然可以改进,但是举个例子就可以了。

var count = 0;
var tagging = false;
var users_example = ["jean", "nimusco"];

$('#post').keyup(function(){
  var text = $(this).val();
  
  if(text.length > count){
    var lastChar = text.substr(count);
    
    if(lastChar == "@"){
      tagging = true;
    }
    
    //White space break the tagging.
    if(lastChar == " "){
      tagging = false;
    }
    
    //Adapt this to your tagging function
    if(tagging == true){
      var username = text.substr(text.lastIndexOf('@') + 1, text.length);
      console.log(username);
      if($.inArray(username.toLowerCase(), users_example) !== -1){
        alert('found it!');
        tagging = false;
      }
    }
  }
  
  count = text.length;
});
#post{
width:300px;
height:150px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<textarea id="post">

</textarea>