window.location.href 在单击按钮时将浏览器重定向到 stackoverflow.com,但在输入文本字段中按“Enter”时不会,尽管两个事件监听器使用相同的函数 visitStack。
如果这有帮助,将 form 标签更改为 div 标签会以某种方式使它起作用,但这当然不是语义上的。
将最后一行中的“keydown”更改为“click”,并将 visitStack(e) 立即移动到 keyDownTextField(e) 中,使其也能正常工作。
所以 keydown 和/或表单标签似乎是这里的罪魁祸首,但我不确定。
<form>
<input id="iamtext" type="text" />
<input id="gobutton" type="button" value="Overflow" />
</form>
<script type="text/javascript">
document.getElementById("gobutton").addEventListener("click", visitStack, false);
function visitStack(e) {
e.stopPropagation();
window.location.href = "http://www.stackoverflow.com";
}
function keyDownTextField(e) {
var keyCode = e.keyCode;
if(keyCode==13) {
alert("Entered!");
visitStack(e);
}
}
document.getElementById("iamtext").addEventListener("keydown", keyDownTextField, false);
</script>
最佳答案
在 HTML 表单的文本输入字段中点击 ENTER
相当 different effects在不同的浏览器上。
在您的情况下,我假设表单是在按下 ENTER 时提交的。由于您没有指定任何action
,表单将提交到导致重新加载的同一页面。
关于Javascript:在函数内调用函数时 window.location.href 不重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2369635/