您的位置:首页 > 其它

捕捉enter事件实现搜索功能时遇到的一个怪异问题

2012-10-27 14:25 465 查看
用的是bootstrap框架。

HTML代码:

<form class="form-horizontal">
<fieldset>
<div class="control-group">
<div class="controls">
<div class="input-append pull-right">
<input id="sample_search" class="span3" type="text" size="32" value="" placeholder="文件MD5/文件名" onKeyUp="goSearch(event)" /><a href="javascript:void(0);" id="samplesearchbtn" class="btn"><i class="icon-search"></i>搜索</a>
</div>

<div class="btn-group pull-left">
<button class="btn dropdown-toggle" data-toggle="dropdown">下拉菜单<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a href="javascript:void(0);" onClick="multi_online_identify()">子菜单一</a></li>
<li><a href="javascript:void(0);">子菜单二</a></li>
<li><a href="javascript:void(0);">子菜单三</a></li>
</ul>
</div>
</div>
</div>
</fieldset>
</form>


JS代码:(传说中的可以兼容IE和Firefox的代码)

function goSearch(event){
var e = event || window.event || arguments.callee.caller.arguments[0];
if(e && e.keyCode==13){
getSampleInfo({'page':1});
return false;
}
}


在chrome和firefox浏览器中运行的现象:鼠标点击文本输入框,输入关键字,按下enter键,能实现搜索功能,但“下拉菜单”被展开,就像下拉菜单同时被点击了一样。

解决办法:去掉<form>和<fieldset>这两个层级的标签。

好像问题解决了^__________^?

但,等等,在IE8和IE9下,按下enter键下拉菜单还是会展开,好吧,几经折腾,找到的解决办法是把<button>标签换成<a>标签,最终HTML代码如下:

<div class="control-group">
<div class="controls">
<div class="input-append pull-right">
<input id="sample_search" class="span3" type="text" size="32" value="" placeholder="文件MD5/文件名" onKeyUp="goSearch(event)" /><a href="javascript:void(0);" id="samplesearchbtn" class="btn"><i class="icon-search"></i>搜索</a>
</div>

<div class="btn-group pull-left">
<a class="btn dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">下拉菜单<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="javascript:void(0);" onClick="multi_online_identify()">子菜单一</a></li>
<li><a href="javascript:void(0);">子菜单二</a></li>
<li><a href="javascript:void(0);">子菜单三</a></li>
</ul>
</div>
</div>
</div>


这下应该没问题了~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐