我想在有人输入 @ 符号后调用一个函数,并且只有当它前面没有字符,而且 @ 符号是textarea
中写入的第一个字符也运行该函数。
现在我知道在 JS 中有 onkeypress
事件并且我知道 @ 符号 unicode 字符是 64
。
所以我可以这样写一个函数
keyPress(event) {
if (event.keyCode === 64) {
// Do Something
}
}
但是我如何检测 @ 符号之前是否有字符,我只是想知道这个 keyPress
事件是否会在移动设备上正常工作?
只是为了澄清这是在 textarea
中使用的,我已经看到您可以使用正则表达式,但显然它不适用于所有浏览器?我需要它适用于所有浏览器和移动设备。
这也必须在同一个 textarea
中运行多次,如果 @
符号是第一个键入的字符,则也运行该函数。
如有任何帮助,我们将不胜感激!
最佳答案
一个相当合理的解决方案是监听按键事件,如果字符是空格则设置一个 bool 标志,如果字符是 @
则运行你的函数并且设置标志表明前一个字符是一个空格,如果字符是其他任何字符,则重置标志。
继续你的例子:
let hasSpace = false;
keyPress(event) {
if(event.keyCode === 32 || event.keyCode === 160) {
hasSpace = true;
} else if(event.keyCode === 64 && hasSpace) {
hasSpace = false;
// Do something, the previous character was a space
} else {
hasSpace = false;
}
}
这将保证 //Do something
处的代码只有在当前字符是 @
和 前一个字符时才会运行是一个空间。请注意,我同时使用了 32
和 160
作为空间,因为有两种类型的空间需要考虑,中断和非中断。
关于javascript - 在按下某个字符后调用函数,但前提是手前有空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51354375/