Javascript 如何在textarea停用按键事件
我正在编写一个javascript应用程序。我用了类似Javascript 如何在textarea停用按键事件,javascript,html,Javascript,Html,我正在编写一个javascript应用程序。我用了类似 document.keypress = function(e) { switch(e.which){ case 97: alert('foobar'); break; ....... 而且效果很好!现在,在html页面的某个地方,我有一个文本区域,现在,每当我键入a(即ASCII 97),它就会发出alert(显然) 问题是我如何防止这种情况?“我的按键事件”适用于除文本区域和文本字段之外的所有
document.keypress = function(e) {
switch(e.which){
case 97:
alert('foobar');
break;
.......
而且效果很好!现在,在html页面的某个地方,我有一个文本区域,现在,每当我键入a
(即ASCII 97),它就会发出alert
(显然)
问题是我如何防止这种情况?“我的按键事件”适用于除文本区域和文本字段之外的所有内容?您可以使用
target
属性来标识触发事件的元素。
然后,使用标记名计算元素类型
您可以使用其他属性,如type
,来确定它是否为文本字段
document.keypress = function(e) {
var target = e.target;
var elementType = target.tagName.toLowerCase();
if (elementType != "textarea" && !(elementType =="input" && target.type =="text")) {
switch(e.which){
case 97:
alert('foobar');
break;
.......
您可以指定要向其中添加事件侦听器的元素,例如:
document.getElementById('text-field').keypress = function (e) {
var code = e.keyCode || e.which;
switch (code) {
case 97:
alert('foobar');
break;
....
}
}
您可以使用jQuery的keyPress
方法
以下是如何使用它:
$("#target").keypress(function(e) {
e.preventDefault();
});
我认为您需要的是jQuery的方法
从文件中-
防止事件在DOM树中冒泡,防止任何
父处理程序不会收到事件通知
当您在文本框内单击时,警报将不会显示。单击文档中的其他位置时,将显示警报。我可以看到两种可能的方法:
将onfocus/onblur处理程序添加到文本输入中,以清除/设置document.keypress
在处理程序中,获取当前关注的元素
然后使用.tagName和.type属性确定它是否为文本输入 尝试以下操作:
$(document).on("keypress",function(e){
switch(e.which){
case 97:
alert('foobar');
break;
}
});
$('textarea,input[type="text"]').on("keypress",function(e){
e.stopPropagation();
});
这是小提琴:
我希望这能有所帮助。如果我错了,请纠正我-您希望警报仅在您在文本框中键入“a”时显示?不,他希望仅在未键入textarea、textfields时显示警报…使用e.preventDefault()
在文本区域的按键事件中使用,或textfield@RaoulGeorge:我希望仅当我在窗口的任何位置键入“a”时,警报才会显示,但当文本区域聚焦时,我不想显示它@ZZllalani:很抱歉,这没用。上面说他在使用文本区。嘿嘿<代码>输入
?嘿嘿
$(document).on("keypress",function(e){
switch(e.which){
case 97:
alert('foobar');
break;
}
});
$('textarea,input[type="text"]').on("keypress",function(e){
e.stopPropagation();
});