满足以下几点机即可:
input type="search"
放到form
标签中
使用action
属性
<form action="." >
<input type='search' />
</form>
注意:
如果只使用input type="search"
,而不放到form
标签中,则显示“换行”;
如果放到form
中,但是使用type="text"
,则显示“前往”;
如果放到form
中,使用input type="search"
,但没有action
属性,Android不会有问题,但在IOS8以上的系统中,键盘上仍不会显示“搜索”,而是显示“换行”。
回车事件
如果页面中不设置“搜索”按钮来触发搜索操作,而是当点击键盘中的“搜索”时就进行搜索操作。可以监听输入框的回车事件。比如在onKeyDown
事件监听中,获取事件keyCode
,判断是否输入“回车”(keyCode=13
),然后再进行相关的搜索操作。
点击搜索之后页面自动刷新的问题
因为这个form
中只有一个输入框,所以在输入框中输入回车时,页面会自动刷新。要避免此情况,可以在添加一个隐藏的input
。
<form action="." >
<input id="iptSearch" type='search' />
<input type="text" style="display:none;"/>
</form>
输入框内的小叉X
type=“search”
的输入框在获取到焦点后,默认会出现一个小叉叉,用于清空输入框中的内容,而且样式因浏览器而异。如果想要隐藏这个X
,可以使用如下CSS:
input[type="search"]::-webkit-search-cancel-button{
-webkit-appearance: none;
}
移动端 h5 界面软键盘搜索功能实现
解决方法: 对应移动端按键响应事件onkeypress
(或者keyup
) 按键编码为13
,
document.onkeyup = function (e) {
var code = e.charCode || e.keyCode;
if (code == 13) {
that.search();
}
}
js判断单击软键盘的“完成”按钮
方法一、模拟表单提交,
在input
外面包上一个form
标签,当用户在表单中单击搜索或完成会触发表单的submit
事件,所以在submit
事件中去处理搜索的逻辑,并阻止表单的提交
html
<form action="" id="form"> <input type="text"> </form>
js
$('#form').submit(function(){ // 处理相关逻辑 return false; })
方法二、用keypress
事件
最让我喜出望外的是,移动端的软键盘也是支持keypress、keydown、keyup
事件的,这样实现起来就更加简单了,完成的event.keyCode
是13,和键盘上的回车键一样,
代码
<input type="text" id ="txt">
$("#txt").keypress(function(e){ if(e.keyCode === 13) { // 处理相关逻辑 } })
推荐使用方法二
常用的手机浏览器都是兼容的,但不敢保证所有的都是兼容,万一有个***呢