关于javascript事件的疑问,请大家帮忙看下是什么原因!!###[100分]###

DADA_dotnet 2008-02-05 09:33:51
Firefox浏览器下,为什么在文本框中回车会导致页面表单提交(页面刷新了)。IE中正常。

---------------------------------------------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Page</title>
</head>
<body>
<form id="form1" action="">
<input id="Text1" type="text" value="123456" />
<input id="Button1" type="button" value="button" />
<!--<input type="text" style="display:none;" />-->
<script type="text/javascript">

//
document.getElementById('Text1').onfocus = function() {this.value = '';};
document.getElementById('Text1').onkeydown = function(e)
{
//
if(typeof(event) == 'object') {e = event;}

//
if(e.keyCode == 13) // Enter键
{
document.getElementById('Button1').onclick();
return false;
}
return true;
};

//
document.getElementById('Button1').onclick = function()
{
alert(document.getElementById('Text1').value);
};
</script>
Firefox浏览器下,为什么在文本框中回车会导致页面表单提交(页面刷新了)。
</form>
</body>
</html>
...全文
151 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
呵呵在FF中要学会做兼容!!
a4503231987 2008-02-18
  • 打赏
  • 举报
回复
firefox就是一垃圾!
liuhongxing1908901 2008-02-10
  • 打赏
  • 举报
回复
1、在FF下,当form中只有一个text输入域时,该域的回车会触发onsubmit事件。这一点你可以写一个简单的HTML测试一下。这也是为什么你在form中增加一个text输入域(即使是隐藏域)后,就没有发生submit事件的原因。你也可以把增加的这个输入域的Type改为“button"试试,submit照常发生。
2、正是因为onsubmit事件是由回车引发的,所以你点击button1并没有引发onsubmit事件。
3、FF的这种设计并非完全带来麻烦。事实上当你知道这个特性后,它会给我们带来许多方便。^_^
4、知道这个原因后,解决方案其实很多。楼上的将onsubmit = "return false;"算一种(如果你准备Ajax提交的话),你代码中的增加一个隐藏input域也是一种。
老紫竹 2008-02-08
  • 打赏
  • 举报
回复
<form id="form1" action="test.htm" onsubmit="return false;">


我以前遇到f下的问题,都是这个原因,必须把action和onsubmit补齐了,否则即使是ajax都会
造成表单提交的,真的很奇怪的!
DADA_dotnet 2008-02-08
  • 打赏
  • 举报
回复
To:cat_hsfz

在Firefox中,return false;也可以阻止事件冒泡吧?只要没有alert,好象还是可以的

另外把 <!-- <input type="text" style="display:none;" /> -->注释去掉,Firefox里也正常了.

大伙有拷贝下来运行试试吗?我用文字描述不是很清楚!!!抱歉!!!
cat_hsfz 2008-02-08
  • 打赏
  • 举报
回复
return false用于阻止事件冒泡从而阻止默认事件的触发,这个你知道对吧?然而这一招仅对IE有效。
DADA_dotnet 2008-02-06
  • 打赏
  • 举报
回复
你在firefox和IE下运行,就可以看出区别了!firefox页面刷新了..
he_8134 2008-02-05
  • 打赏
  • 举报
回复
                        document.getElementById('Text1').onkeydown   =   function(e) 
{
//
if(typeof(event) == 'object') {e = event;}

//
if(e.keyCode == 13) // Enter键
{
document.getElementById('Button1').onclick();
return false;
}
return true;
};

这段代码就是为了点回车也可以提交才写的..
DADA_dotnet 2008-02-05
  • 打赏
  • 举报
回复
奇怪的是,我把<!-- <input type="text" style="display:none;" /> --> 注释去掉。在Firefox中也正常了。。。

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧