Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取@和textarea当前位置之间的发生率_Javascript_Jquery - Fatal编程技术网

Javascript 获取@和textarea当前位置之间的发生率

Javascript 获取@和textarea当前位置之间的发生率,javascript,jquery,Javascript,Jquery,我想根据文本区域的当前书写位置,获取@之后的单词。更准确地说: 如果当前光标位置位于@的任何字母上,则答案应为 如果当前光标位置位于任何其他单词上,则答案应为空' 我正在努力解决这个问题,但没有找到任何“好”的方法 $('hey')。在('click',function(){alert();})上 你好@user是我这是一条长文本,这里是另一个@username干杯! 单击“我”从假定的副本更新代码后,结果如下 函数getCaretPosition(ctrl){ var开始、结束; 如

我想根据
文本区域
的当前书写位置,获取
@
之后的单词。更准确地说:

  • 如果当前光标位置位于
    @
    的任何字母上,则答案应为

  • 如果当前光标位置位于任何其他单词上,则答案应为空
    '

我正在努力解决这个问题,但没有找到任何“好”的方法

$('hey')。在('click',function(){alert();})上

你好@user是我这是一条长文本,这里是另一个@username干杯!

单击“我”
从假定的副本更新代码后,结果如下

函数getCaretPosition(ctrl){ var开始、结束; 如果(ctrl.setSelectionRange){ 开始=ctrl.selectionStart; 结束=ctrl.selectionEnd; }else if(document.selection&&document.selection.createRange){ var range=document.selection.createRange(); start=0-range.duplicate().moveStart('character',-100000); 结束=开始+范围.text.length; } 返回{ 开始:开始, 完:完 } } $(“textarea”)。在(“单击键控键控”,函数(){ var caret=getCaretPosition(此); var endPos=this.value.indexOf(“”,插入符号.end); 如果(endPos==-1)endPos=this.value.length; var result=/\S+$/.exec(this.value.slice(0,endPos)); var lastWord=result?result[0]:空; 如果(lastWord)lastWord=lastWord.replace(//['”;:,.\/?\ \-]$/,'');//删除标点符号 $(“#atID”).html((lastWord和lastWord.indexOf(“@”)==0)?lastWord:); });

如果您愿意,请在twitter@mplungjan上关注我

根据假定的副本更新代码后,结果如下

函数getCaretPosition(ctrl){ var开始、结束; 如果(ctrl.setSelectionRange){ 开始=ctrl.selectionStart; 结束=ctrl.selectionEnd; }else if(document.selection&&document.selection.createRange){ var range=document.selection.createRange(); start=0-range.duplicate().moveStart('character',-100000); 结束=开始+范围.text.length; } 返回{ 开始:开始, 完:完 } } $(“textarea”)。在(“单击键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键控键{ var caret=getCaretPosition(此); var endPos=this.value.indexOf(“”,插入符号.end); 如果(endPos==-1)endPos=this.value.length; var result=/\S+$/.exec(this.value.slice(0,endPos)); var lastWord=result?result[0]:空; 如果(lastWord)lastWord=lastWord.replace(//['”;:,.\/?\ \-]$/,'');//删除标点符号 $(“#atID”).html((lastWord和lastWord.indexOf(“@”)==0)?lastWord:); });

如果您愿意,请在twitter@mplungjan上关注我

@mplungjan这正是我努力尝试修改的内容,难道没有完全不同的方法吗?只需测试一下这个词是否包含@。为什么不告诉我们你已经尝试过的代码呢?这是一段很长的不起作用的代码(见我的其他问题,我通常会发布我尝试过的代码,但在这里它很难看而且毫无意义)。如果你对我作为重复输入的答案感到困惑,我会等着标记为重复。回答中的代码有什么不适合你?我尝试的东西与你第一次评论中给出的链接相似。另一方面,重复的问题似乎解决了问题:)谢谢你给我指出这个问题。唯一的问题:查看bug/评论你对@mplungjan有什么想法吗?@mplungjan这正是我一直在努力尝试修改的内容,没有完全不同的方法吗?只是测试一下这个词是否包含@。为什么不告诉我们你已经尝试过的代码呢?这是一段很长的不起作用的代码(见我的其他问题,我通常会发布我尝试过的代码,但在这里它很难看而且毫无意义)。如果你对我作为重复输入的答案感到困惑,我会等着标记为重复。回答中的代码有什么不适合你?我尝试的东西与你第一次评论中给出的链接相似。另一方面,重复的问题似乎解决了问题:)谢谢你给我指出这个问题。唯一的问题:请看关于@mplungjan的bug/评论您有什么想法吗?