Javascript 使用jQuery或普通js捕获键和触发器函数
我在表单中有一个文本区域:Javascript 使用jQuery或普通js捕获键和触发器函数,javascript,jquery,Javascript,Jquery,我在表单中有一个文本区域: <textearea id="message"></textarea> 键入时,每当用户在文本区域内键入字符#时,我希望为随后键入的每个字符触发一个函数,直到用户点击enter键或空格键 使用jQuery或普通JS怎么可能做到这一点?如果您只想检测键入,您可以监听按键事件 var anyHitYet = false; jQuery('#massage').keydown(function (event) { if (anyHit
<textearea id="message"></textarea>
键入时,每当用户在文本区域内键入字符#时,我希望为随后键入的每个字符触发一个函数,直到用户点击enter键或空格键
使用jQuery或普通JS怎么可能做到这一点?如果您只想检测键入,您可以监听按键事件
var anyHitYet = false;
jQuery('#massage').keydown(function (event) {
if (anyHitYet) return;
var key = event.keyCode;
if (key === 51) {
//call your function here
} else if (key === 13 || key === 32) {
anyHitYet = true;
}
});
基本上,如果是51,则点击
,因此,如果点击空格
或回车
,则调用函数您的
-当按下此键时,函数将不会执行,直到您再次做出anyHitYet=false
有人可能会粘贴一些东西,因此这是一个不同的故事您可以使用:
var myCallback = function () {
//put your code here
}
(function (callback) {
var jMessage = $('#message'),
callbackCallable = false,
keycodeEnter = 13,
keycodeSpace = 32;
jMessage.keyup(function (e) {
var lastLetter = jMessage.val().slice(-1);
if (lastLetter === '#') {
callbackCallable = true;
} else if (e.keyCode === keycodeEnter || e.keyCode === keycodeSpace) {
callbackCallable = false;
} else if (callbackCallable) {
callback();
}
});
}(myCallback));
不确定上述答案是否符合OP的要求。 我认为第二个或第三个也应该被监控,直到一个空间或返回结束监控
// have a flag somewhere and initialize it to FALSE
var doMonitor = FALSE;
$('#message').keydown(function(event){
// trigger monitoring after # was tipped
// (only once till space or return reset)
if(event.keyCode == 51 && !doMonitor){
doMonitor = TRUE;
}
else if(event.keyCode == 32 || event.keyCode == 13)
doMonitor = FALSE;
else if(doMonitor){
// do whatever needs to be done
}
});
您还可以在#message textarea中添加一个属性,并将其删除(或更改其值),而不是使用变量
// for setting an attribute
.attr( attributeName, value )
// for removing it
.removeattr( attributeName )
看看这里和这里