请检查以下代码,我正在尝试实施类似自动填充功能的Facebook。
https://www.w3schools.com/code/tryit.asp?filename=FIM5SFP0Z1XK
这里我首先计算当前光标位置的值以及键入的字符。如果键入的字符是“@”,则它将字段“last_detected”值的值设置为最后检测到的“@”的位置,然后在下一个键入的字符中,它将计算最后输入的@字符的偏移量当前键入的字符,然后将这些偏移量之间的值传递给call_search_function(),它将返回完整匹配的值。
接下来,我调用replacer函数,它将部分类型字符串(最后输入的@字符的偏移量与当前键入的字符之间的值)替换为完全匹配的值。
现在的问题是,在我的代码中,这个逻辑只能工作一次。例如,如果您是第一次键入“@und”,它将在“contenteditable div”中将“@und”替换为“承包商”,但如果再次键入“@und”则不起作用。请协助。
在调试代码时,我怀疑下面的范围函数在第二次调用时失败。
range.setStart(sel.focusNode,startIndex); range.setEnd(sel.focusNode,endIndex);
任何帮助或帮助都将受到高度赞赏。