input type="search" 实现搜索框

欲实现一个文字搜索的功能,要求输入时,键盘回车按钮提示显示为“搜索”。效果如下:


Paste_Image.png

开始~
input type=text并不能达到这种效果,google了一下,html5 增加的type=search可以做到(但需要input type=search外面包上一层带action属性的form)。

        <div class="search-input-wrap clearfix">
            <div class="form-input-wrap f-l">
                <form action="" class="input-kw-form">
                    <input type="search" autocomplete="off" name="baike-search" placeholder="请输入关键词" class="input-kw">
                </form>
                <i class="iconfont if-message"></i>
                <i class="iconfont if-close"></i>
            </div>
            <i class="search-cancel f-l">取消</i>
        </div>

但type=search会有许多默认样式和行为,这次开发遇到的有:

  • 会默认下拉框显示搜索历史记录;


    3283C42B-4CCD-478D-B275-50C10A2F770C.png
  • 输入时自动弹出“x”,“x”的样式在不同手机上,样式不同;


    3B8D4F17-8218-4458-8E89-05E9666F8464.png
  • IOS 手机(测试时为iphone6 ios10)上输入框为椭圆形.


    A63C671C-C523-4007-976F-C84DF29BC052.png

但我们希望样式按照我们自定义的样式显示,并且各个手机上能统一。

于是几经google,得到答案:

  • 设置input autocomplete="off"去掉弹出的下拉框;
  • 将默认的“x”隐藏掉:
input[type="search"]::-webkit-search-cancel-button{
    display: none;
}
  • 针对ios 设置样式, 去除ios下input 椭圆形:
    -webkit-appearance: none;

同时别忘记,如果提交搜索时想使用ajax,那么可以阻止表单的默认行为:

container.on('submit', '.input-kw-form', function(event){
    event.preventDefault();
})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,205评论 4 61
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,677评论 7 249
  • 对话和独白,品质很不同。……独白,就是你对他的行为感兴趣。……对话,就是你对他的内心感受很好奇。 从只能够对着他人...
    曾红霞阅读 3,452评论 0 1
  • 基督徒为了证明他们的虔诚,用身躯丈量着朝圣的路。 我们不懂得洁净的世界里单纯的灵魂是怎样的安宁,所以,不会...
    小小睿有大智慧阅读 1,703评论 0 1
  • 不知不觉已经五年了,从12年开始,遇见心理学,遇见内在心灵。生活中还是常会有怎么还是这样?为什么还是会焦...
    青竹青竹青阅读 1,716评论 0 0