Javascript 未使用两个窗体检测到两个脚本键控

Javascript 未使用两个窗体检测到两个脚本键控,javascript,html,Javascript,Html,嘿,我有一个包含两个表单和两个javascript的简单代码。当我单击num键时,键1或9应该是发送表单,并且只处理最后一个表单。如果我切换javascript代码,最后一个代码是KeyCode49(1),那么num 1可以工作,但num 9不能工作。问题是因为在同一页上,我有两个单独的表单 函数submitForm(){ document.priceOptionForm.submit(); document.priceOptionForm.method='post'; } document.

嘿,我有一个包含两个表单和两个javascript的简单代码。当我单击num键时,键1或9应该是发送表单,并且只处理最后一个表单。如果我切换javascript代码,最后一个代码是KeyCode49(1),那么num 1可以工作,但num 9不能工作。问题是因为在同一页上,我有两个单独的表单

函数submitForm(){
document.priceOptionForm.submit();
document.priceOptionForm.method='post';
}
document.onkeydown=函数(){
如果(window.event.keyCode=='49'){
submitForm();
}
}
document.getElementById(“profile_price”).onclick=submitForm;
函数submitForm2(){
document.priceOptionForm2.submit();
document.priceOptionForm2.method='post';
}
document.onkeydown=函数(){
如果(window.event.keyCode=='57'){
submitForm2();
}
}
document.getElementById(“profile_price2”).onclick=submitForm2

每个事件类型一个元素只能有一个“直接”事件回调。第二次使用
document.onkeydown
可以覆盖第一次。将所有代码放在一个回调函数中,或者(建议这样做)使用
addEventListener('keydown',callbackFunction)
。这样,每个元素的每个事件类型都可以有多个回调

您应该对每个事件都这样做,因为即使它现在起作用,您的事件代码也很容易在其他地方被覆盖

函数submitForm(){
document.priceOptionForm.method='post';
document.priceOptionForm.submit();
}
文档.添加的事件列表器('keydown',函数(e){
如果(e.keyCode=='49'){
控制台日志(1)
submitForm();
}
})
document.getElementById(“profile_price”).addEventListener(“单击”,提交表单);
函数submitForm2(){
document.priceOptionForm2.method='post';
document.priceOptionForm2.submit();
}
文档.添加的事件列表器('keydown',函数(e){
如果(e.keyCode=='57'){
控制台日志(9)
submitForm2();
}
})
document.getElementById(“profile_price2”).addEventListener('click',submitForm2)

我认为问题在于您将侦听器直接传递给了
document.onkeydown
两次。通过这样做,您只需由第二个侦听器重写
document.onkeydown
的第一个侦听器。您应该使用
addEventListener
添加事件监听器,以便两个监听器都将保持

document.addEventListener('keydown', function listenerOne () {})

document.addEventListener('keydown', function listenerTwo () {})

您是否尝试将所有代码包装在“addEventListener”中?听起来你的代码工作正常,但只运行了1次(javascript取最后一行并运行),你可以在addEventListener上阅读:它在chrome上工作,但在IE上不工作,我只需要IE解决方案。你能再帮我一次吗?@working4545请看这里: