我觉得@人功能最核心的地方就是获取光标位置,所以我现在的做法是watch光标位置,然后判断光标左边的字符是不是'@',如果是的话就根据光标位置把textarea里面的字符分成两部分,再获取用户输入的字符,筛选数据。最后把'@'前面的内容,筛选的用户,'@'后面的内容这三部分拼接起来。
我按照这样的思路把功能做出来了,但在写单元测试(jasmine)的时候遇到了个问题。
textarea.focus().val('12345');
console.log(textarea[0].selectionStart)
我用这样的语句,也找过其他设置光标位置的方法,但光标位置总是返回0,这样写不了测试。。
是不是我这种方法不好写测试?
有木有其他思路?
顺便说下,获取光标位置我是用了caret.js。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://study.congcong.us/t/80034
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.