【问题标题】:Show 'Search' button in iPhone/iPad Safari keyboard在 iPhone/iPad Safari 键盘中显示“搜索”按钮
【发布时间】:2011-06-19 08:21:00
【问题描述】:

我注意到在戴尔或谷歌等网站上导航时,使用 iPhone 在他们的搜索文本框中键入时,键盘上会出现一个蓝色按钮“搜索”,而不是出现在任何正常表单上的标准“开始”按钮。

你应该怎么做才能显示搜索按钮?

【问题讨论】:

    标签: iphone html ipad safari


    【解决方案1】:

    在 HTML5 标准中,在输入中添加 enterkeyhint 属性是更改虚拟键盘标签的正确方法

    
    <input enterkeyhint="search" />
    
    

    如果没有提供 enterkeyhint 属性,用户代理可能会使用来自输入模式、类型或模式属性的上下文信息来显示合适的输入键标签(或图标)。

    MDN Docs about enterkeyhint

    【讨论】:

      【解决方案2】:

      当使用@Anton Bielousov 建议的解决方案时,这也会改变 Android 设备的样式。为了解决这个问题,我不得不:

      • 围绕输入添加表单。
      • 添加 type="搜索"
      • 添加包含搜索的名称
      • 添加样式以对抗不需要的 android 样式

      Android 样式:

      input[type=search] { -webkit-appearance: none; }
      /* clears the ‘X’ from Internet Explorer */
      input[type=search]::-ms-clear { display: none; width : 0; height: 0; }
      input[type=search]::-ms-reveal { display: none; width : 0; height: 0; }
      /* clears the ‘X’ from Chrome */
      input[type="search"]::-webkit-search-decoration,
      input[type="search"]::-webkit-search-cancel-button,
      input[type="search"]::-webkit-search-results-button,
      input[type="search"]::-webkit-search-results-decoration { display: none; }
      <form action="" class="search-bar__form-form">
        <input
          class="search-bar__input"
          name="search-bar"
          type="search"
        />
      </form>

      【讨论】:

        【解决方案3】:

        拥有 type="search" 通常你只需要让软件搜索键盘出现,但是在 iOS8 中,必须有一个带有 action 属性的包装表单。

        所以下面的代码会有一个带有“返回”按钮的软键盘

        <form>
            <input type="search" />
        </form>
        

        但是这段代码应该有蓝色的“搜索”按钮

        <form action=".">
            <input type="search" />
        </form>
        

        【讨论】:

        • 设置 type=search 在 Chrome iOS 中对舍入搜索输入字段角有负面的 UX 副作用。讨厌浏览器开始为我做出 UI 设计决策。
        • @demisx 您可以(并且可能总是应该)在 CSS 中重置默认浏览器样式:[type="text"], [type="search"] { -webkit-appearance: none; },并且不要将功能与样式混合。
        • 这应该是正确的答案,因为无论出于什么愚蠢的原因,Apple 不会给您 Search 掩码,除非您包含表单的 action 属性。没有它,type 属性就没有实际意义。
        • @Stonetip 这个答案是多年后才出现的,可能是作为更新的解决方案,当时 iOS 8 添加了要求在屏幕键盘上显示“搜索”标签的 action 属性。所以按照今天的标准,肯定是一个更好的答案,但不一定是在 2011 年初提出问题时。
        • 答案对 iPhone 12 仍然有效。
        【解决方案4】:

        在 iOS 8 上,您可以通过以下方式之一启用键盘上的蓝色“搜索”按钮:

        • 添加输入名称=搜索
        • 添加输入类型=搜索
        • 在 ID 中使用区分大小写的单词“search”添加 id 输入,用于 例如 the-search 或 thesearchgod

        【讨论】:

        • 对我不起作用 - 必须使用上面的 @Anton Bielousov 解决方案和表单操作。
        【解决方案5】:

        我无法获得搜索按钮

        <input type="search" />
        

        但是,我确实让它与

        一起出现
        <form>
            <input name="search" />
        </form>
        

        【讨论】:

        • 不仅name="search",而且只包含“search”这个词就足够了。例如,name="archive_search"
        • 在我的输入字段被表单元素包围之前,我无法显示搜索键盘。感谢您的提示。
        • iOS 9.3.1 似乎需要 action 属性才能显示搜索按钮。
        【解决方案6】:

        键盘由操作系统 (iOS) 处理,不能直接更改。所需的输入类型决定了要显示的键盘类型。

        如果有问题的网站是 HTML5,那么@David 的回答是有效的。

        【讨论】:

          【解决方案7】:

          您可以通过以下方式影响此行为:

          <input type="search" />
          

          JS Bin demo

          忽略 submit 按钮的文本是“水壶”,我只是想确定它不是影响 iOS 键盘文本的提交按钮...

          这当然是向后兼容的,因为不理解type="search" 的浏览器将默认为type="text",这对于创建forward-planning html5 forms 很有用。

          【讨论】:

          • 知道为什么它可以在这个网站上运行吗? mobilecityonline.com 在 iPhone 上检查了源,它没有使用 type=search 的输入。
          • 回答我自己的评论,如果文本框的名称中还包含“搜索”一词,iPhone 似乎也会在键盘上显示“搜索”。没有测试过 Android。
          • 元素的id 必须包含搜索才能使其在Chrome 中运行,然后为了使其在iPhone 和iPad 上运行,我必须将input 放在&lt;form&gt; 中。
          • 该表单还需要具有action 属性。我已经在 iOS 9.3.1 上测试过了
          猜你喜欢
          • 2011-05-17
          • 2011-02-11
          • 1970-01-01
          • 2021-12-12
          • 2023-04-03
          • 2015-02-01
          • 2013-07-11
          • 2011-07-30
          相关资源
          最近更新 更多