文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Firefox中OnKeyDown/OnKeyPress和Form的关系

Firefox中OnKeyDown/OnKeyPress和Form的关系

时间:2010-08-30  来源:0417

需求陈述
很简单,页面中有如下元素,Form表单和文本框,当用户在文本框内回车时判断文本框是否有内容,然后选择性的给出提示。

问题描述
1.在FF中OnKeyDown事件会触发Form提交,而在IE中则不触发。
2.在FF和IE中OnKeyPress事件表现正常。
2.页面中去掉Form表单,表现正常。

测试代码
<div>
    <form name="form1" method="post" action="http://0417.cnblogs.com">
        该文本框为<strong>OnKeyPress</strong>测试
        <br />
        <input type="text" id="txtKey" onkeypress="if(KeyCode(event) == 13) return Search();" />
    </form>
    
    <br />
    
    <form name="form2" method="post" action="http://0417.cnblogs.com">
        该文本框为<strong>OnKeyDown</strong>测试
        <br />
        <input type="text" id="txtKey2" onkeydown="if(KeyCode(event) == 13) return Search2();" />
    </form>

    <script language="javascript" type="text/javascript">
        function Search() {
            var key = $("#txtKey").val();

            if (key == "") {
                alert("OnKeyPress 触发");
            }
            else {
                window.location = "http://www.google.com";
            }

            return false;
        }
        
        function Search2() {
            var key = $("#txtKey2").val();

            if (key == "") {
                alert("OnKeyDown 触发");
            }
            else {
                window.location = "http://www.google.com";
            }

            return false;
        }

        function KeyCode(e) {
            if ($.browser.msie) {
                return e.keyCode;
            }
            else {
                return e.which;
            }
        }
    </script>
</div>

该文本框为OnKeyPress测试,回车后弹出提示对话框,停留在当前页。


该文本框为OnKeyDown测试,回车后,一边跳转到本博首页一边弹出对话框,谁先谁后?


测试响应顺序
<input type="text" id="txtOrder"/><br/>
<script language="javascript" type="text/javascript">
var txt = document.getElementById("txtOrder");
txt.onkeypress=function(){
    alert("OnKeyPress 触发");
}
txt.onkeydown=function(){
    alert("OnKeyDown 触发");
}
</script>

将焦点定位到文本框中,然后按键盘


小结以及问题
onkeypress:事件会在键盘按键被按下并释放一个键时发生。
onkeydown:事件会在用户按下一个键盘按键时发生。
onkeyup:事件会在键盘按键被松开时发生。

在FF中onkeypress首先被触发,接着才是onkeydown被触发,然后再触发一遍onkeypress事件。
而IE则是先onkeydown接着onkeypree被触发。

问题是:为什么在一个有Form表单的页面使用onkeydown会出现提交的操作?
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载