input type="search" 實現搜索框

欲實現一個文字搜索的功能,要求輸入時,鍵盤迴車按鈕提示顯示爲「搜索」。效果以下:
Paste_Image.pnghtml

開始~html5

input type=text並不能達到這種效果,google了一下,html5 增長的type=search能夠作到(但須要input type=search外面包上一層帶action屬性的form)。ios

<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會有許多默認樣式和行爲,此次開發遇到的有:web

  • 會默認下拉框顯示搜索歷史記錄;
    3283C42B-4CCD-478D-B275-50C10A2F770C.pngajax

  • 輸入時自動彈出「x」,「x」的樣式在不一樣手機上,樣式不一樣;
    3B8D4F17-8218-4458-8E89-05E9666F8464.pngapp

  • IOS 手機(測試時爲iphone6 ios10)上輸入框爲橢圓形.
    A63C671C-C523-4007-976F-C84DF29BC052.pngiphone

但咱們但願樣式按照咱們自定義的樣式顯示,而且各個手機上能統一。測試

因而幾經google,獲得答案:google

  • 設置input autocomplete="off"去掉彈出的下拉框;spa

  • 將默認的「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();
})
相關文章
相關標籤/搜索