Javascript:window.location.href在函数内调用函数时不重定向

时间:2010-03-03 08:13:39

标签: javascript

window.location.href在单击按钮时将浏览器重定向到stackoverflow.com,但在输入文本字段中按“Enter”时不会,尽管两个事件侦听器都使用相同的函数visitStack。

如果这有帮助,将表单标签更改为div标签会以某种方式使其工作,但当然它不是语义。

将最后一行中的“keydown”更改为“click”,并立即在keyDownTextField(e)中移动visitStack(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>

2 个答案:

答案 0 :(得分:1)

在HTML表单的文本输入字段中点击ENTER在不同的浏览器上具有different effects

在您的情况下,我假设表单是在按ENTER键时提交的。由于您尚未指定任何action,因此表单将提交到同一页面,从而导致重新加载。

答案 1 :(得分:0)

您还可以尝试将e.preventDefault()以及e.stopPropagation()添加到visitStack()。