Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 捕获图像元素';onkeyup';事件_Javascript_Html_Keyboard Events_Keycode - Fatal编程技术网

Javascript 捕获图像元素';onkeyup';事件

Javascript 捕获图像元素';onkeyup';事件,javascript,html,keyboard-events,keycode,Javascript,Html,Keyboard Events,Keycode,我需要捕获图像元素上的onkeyup事件。以下是该元素的标记: <input class="globalbuttons" type="image" alt="save" title="save" onclick="resetScrollPosition(); tabindex="0" src="/kc-dev/kr/static/images/buttonsmall_save.gif" name="methodToCall.save"> 我看不出有什么理由只保留一些

我需要捕获图像元素上的
onkeyup
事件。以下是该元素的标记:

<input class="globalbuttons" type="image" alt="save" title="save"
  onclick="resetScrollPosition(); tabindex="0" 
  src="/kc-dev/kr/static/images/buttonsmall_save.gif" 
  name="methodToCall.save">

我看不出有什么理由只保留一些密钥。所以,我推荐两件事

tabindex=“-1”
添加到您的输入中,以在默认情况下将其从“被标记到”中删除

<input class="globalbuttons" type="image" alt="save" title="save" onclick="resetScrollPosition();" tabindex="-1" src="http://placehold.it/350x150" />

对于这些元素的键控,返回false

function avoidKey() {
    /* keyCode logic if you decide to go that route */
    return false;
}

var gb = document.getElementsByClassName('globalbuttons');
for (var i=0; i < gb.length; i++) {
    // Would be better to have a function that abstracts binding multiple events
    gb[i].addEventListener('keyup', avoidKey, false);
    gb[i].addEventListener('keypress', avoidKey, false);
    gb[i].addEventListener('keydown', avoidKey, false);
}
函数avoidKey(){
/*如果你决定走那条路,钥匙码逻辑*/
返回false;
}
var gb=document.getElementsByClassName('globalbuttons');
对于(变量i=0;i
浏览器支持


使用jQuery路径可能更容易,只需使用
$('.globalbuttons').on('keyup keydown keypress',function(){})

您知道event.preventDefault()方法吗?也许对你有用。啊,说得好@Rodrigo。我试试看。因此,听起来您同意在这种情况下最好忽略所有键,而不是只有event.preventDefault(),如果keyCode='13'或keyCode='32',您好-仅供参考,您缺少引号。。onclick=“resetScrollPosition();tabindex=“0“@user2808054-是的,我手动键入了标记,在我的webapp中复制和粘贴…时遇到了问题-正如你所建议的,这是正确的。谢谢你的关注…不用担心-该死的,我希望有什么问题,萝莉会试试约翰。我相信getElementsByClassName不支持交叉浏览,所以我会稍微调整一下您的建议。编辑答案。希望这有帮助。约翰-我尝试了你建议的修复方法,但仍然有问题。即使没有任何元素处于焦点并且我按下空格键或ENTER键,表单仍在提交中。因此,我似乎需要在表单上阻止这两个键,但问题是我有文本区域,在这些区域中应该允许这些键的笔划。此外,我还通过jQuery方法实现了您的修复。addEventListener绝对不是跨浏览器友好型的。出于某种原因,我认为您只想防止输入上的键控。是,默认情况下,表单将在输入时提交。请看
function avoidKey() {
    /* keyCode logic if you decide to go that route */
    return false;
}

var gb = document.getElementsByClassName('globalbuttons');
for (var i=0; i < gb.length; i++) {
    // Would be better to have a function that abstracts binding multiple events
    gb[i].addEventListener('keyup', avoidKey, false);
    gb[i].addEventListener('keypress', avoidKey, false);
    gb[i].addEventListener('keydown', avoidKey, false);
}