在ie9下在textbox框里面输入内容按enter键会触发按钮的事件

Posted DHclly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在ie9下在textbox框里面输入内容按enter键会触发按钮的事件相关的知识,希望对你有一定的参考价值。

问题

在ie下,如果存在有button标签,如果在textbox里面输入内容,按下enter键,则会触发第一个按钮的click事件,经过测试,在IE10以及以下的都存在这个问题

原因

浏览器默认行为不一致导致

IE浏览器IE8及以后的版本,会根据页面使用的文档模式(Defining document compatibility)来定义按钮的兼容性问题。IE8标准模式的默认行为是submit,其他模式的默认行为是button。

submit 该按钮是提交按钮(除了 Internet Explorer,该值是其他浏览器的默认值)。

button 该按钮是可点击的按钮(Internet Explorer 的默认值)。

reset 该按钮是重置按钮(清除表单数据)。

以上来自w3c这篇博客

解决办法

给button标签添加上属性type="button",来保证一定是button,而不会是submit,比如

<button type="button"  id="btn">click me</button>

或者使用<input type="button" value="click"/>生成按钮

测试重现代码

html

textbox:<input type="text" />
<button type="button"  id="btn">click by button</button>
<button id="btn2">click2 by button</button>
<div>
<div>
	<p>log:</p>
	<div id="list">
	</div>
</div>
<div>
	<p>log2:</p>
	<div id="list2">
	</div>
</div>    

js

var btn=document.getElementById(\'btn\');
btn.onclick=addLog;
var list = document.getElementById(\'list\');

function addLog (event) {
	debugger;
	var p = document.createElement(\'p\');
	p.innerText=\'click button\';
	list.appendChild(p);
}

var btn2=document.getElementById(\'btn2\');
btn2.onclick=addLog2;
var list2 = document.getElementById(\'list2\');

function addLog2 (event) {
	var p = document.createElement(\'p\');
	p.innerText=\'click button2\';
	list2.appendChild(p);
}

在ie10及以下,会发现在textbox输入按下enter键会触发addLog2方法

以上是关于在ie9下在textbox框里面输入内容按enter键会触发按钮的事件的主要内容,如果未能解决你的问题,请参考以下文章

C#中如何在文本框中输入数据然后按回车就查询数据库将结果显示在Datagridview中?

C#文本框TextBox使用问题

c#程序,textbox如何设置文本居中显示?如何按行读取文本文件内容?

在c#中,将一个textbox设置成多行,并在其中输入多行内容,怎样选中一行并将其显示在另外一个文本框中,

Windows Phone 8 滚动文本框的内容

C#winform弹出能输入文本信息的对话框