gpt4 book ai didi

javascript - 第一次按下回车键时如何停止第一个onclick事件的元素

转载 作者:行者123 更新时间:2023-11-30 10:26:58 25 4
gpt4 key购买 nike

我正在修复一个 jsp 页面中的错误,其中即使使用 onkeypress 事件定义了一个函数来单击特定按钮(实际上它是带有 onclick 的按钮图像> 与之关联的属性)当第一次打开页面然后按下回车键时会抛出错误。

当我调试代码时,我发现实际上有两个调用是同时进行的。即第一个带有 onclick 属性的按钮也被点击了。

这里只是一个示例代码:

<html>
<head>
</head>
<body>
<div onkeypress =handleEnter()>
name <input type="text" src='Create.gif' >
</br>
<input type="image" src='Create.gif' onclick="alert('not done')">
<input type="image" src='Create.gif' onclick="alert('done')">
</div>
</body>
<script>
function handleEnter()
{
if(window.event.keyCode==13)
{
alert('nothing');
event.cancelBubble=true;
}
}
</script>
</html>

按下回车键,两个函数都被调用。

最佳答案

以下可能会起作用。通过阻止按键的默认操作,它应该阻止浏览器触发标准的“表单提交”——我认为这是正在发生的事情。

function handleEnter(e)
{
e || (e = window.event); /// support for both ie and non-ie browsers
if(e.keyCode==13)
{
alert('nothing');
// old ie support
e.cancelBubble = true;
e.returnValue = false;
// non-ie
e.preventDefault && e.preventDefault();
e.stopPropagation && e.stopPropagation();
}
}

你必须记住,如果你在整个页面上阻止默认输入,它将停止在文本区域和其他可能使用输入的地方工作。如果这是一个问题,您可以决定是否阻止默认操作,具体取决于:

var elm = e.srcElement || e.target;

elm 应该包含事件的触发元素。 scrElement 适用于旧版 IE,target 适用于非 IE 浏览器。例如,您可以使用它在达到阻止默认值之前短路您的代码。

if ( elm.nodeName == 'textarea' ) return;

不过,我没有 IE8 来测试它,但考虑到以下链接,它可能会起作用:

http://support.microsoft.com/kb/298498

关于javascript - 第一次按下回车键时如何停止第一个onclick事件的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19152435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com