最近在做一个 Ajax 搜索的功能,代码如下:
1 <form class="form-horizontal"> 2 <input type="text" id="searchKeyWord" class="form-control" placeholder="请输入关键字"> 3 <button class="btn btn-block btn-danger" type="button" id="findResume" onclick="getResumeListBySearch(‘/resume/getResumeList‘, {currentPage:1,pageSize:document.all[‘pageSizes‘].value},‘‘,‘‘,‘#layOutInstHtmlId2‘,‘‘)">找简历</button> 4 </form>
在文本框中输入关键字按回车,页面自动刷新了,结果还是原先显示的列表,没有进行搜索查询。想了想,可能是按回车后默认提交了表单,于是将form注释掉,果然不刷了。但是还有其他搜索条件需要用到form提交进行搜索这样就不行啦。
一个表单下,如果只有一个文本框时,按下回车将会触发表单的提交事件。
有如下两种解决方法:
1.既然是只有一个文本框才会出问题,那么可以加一个隐藏的文本框,如下:
1 <input type="text" id="" class="form-control" style="display: none">
修改后的代码如下:
1 <form class="form-horizontal"> 2 <input type="text" id="searchKeyWord" class="form-control" placeholder="请输入关键字"> 3 <input type="text" id="" class="form-control" style="display: none"> 4 <button class="btn btn-block btn-danger" type="button" id="findResume" onclick="getResumeListBySearch(‘/resume/getResumeList‘, {currentPage:1,pageSize:document.all[‘pageSizes‘].value},‘‘,‘‘,‘#layOutInstHtmlId2‘,‘‘)">找简历</button> 5 </form>
结论是,可以采取两种方法解决这种问题:1.页面只有一个文本框时,去掉表单;2.如果非得用表单,只要不让表单里有且只有一个文本框就OK了。
2.在文本域元素中加入onkeydown或者onkeypress事件,判断如果用户点击了回车就阻止默认的行为。代码如下:
1 <form class="form-horizontal"> 2 <input type="text" id="searchKeyWord" class="form-control" placeholder="请输入关键字" onkeypress="if(event.keyCode==13||event.which==13){return false;}" /> 3 <button class="btn btn-block btn-danger" type="button" id="findResume" onclick="getResumeListBySearch(‘/resume/getResumeList‘, {currentPage:1,pageSize:document.all[‘pageSizes‘].value},‘‘,‘‘,‘#layOutInstHtmlId2‘,‘‘)">找简历</button> 4 </form>
上面两种方法都圆满的解决了问题。
时间: 2024-10-15 20:39:17