我有一個表格內的textarea:捕獲鍵和觸發功能
<textearea id="message"></textarea>
打字時,只要用戶類型的字符# textarea的裏面,我想觸發功能對於之後輸入的每個人物,直到用戶點擊進入或空格鍵。
這是如何使用jQuery或普通的JS?
我有一個表格內的textarea:捕獲鍵和觸發功能
<textearea id="message"></textarea>
打字時,只要用戶類型的字符# textarea的裏面,我想觸發功能對於之後輸入的每個人物,直到用戶點擊進入或空格鍵。
這是如何使用jQuery或普通的JS?
您可以使用此:
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));
如果您只想檢測打字,您可以聽按鍵事件。
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則#
被擊中這麼叫你的函數,如果space
或enter
被擊中你的#
,直到你做出anyHitYet=false
再次
有人可能粘貼 - 當按下功能將不會執行雖然東西所以那是一個不同的故事
不確定上述答案是否符合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)
看這裏http://api.jquery.com/removeAttr/這裏http://api.jquery.com/attr/
而且是的,你可能想閱讀http://stackoverflow.com/faq#questions – kidwon