`

React&Js实现无刷新搜索后隐藏键盘[兼容IOS&Android]

阅读更多

搜索框效果:

 

React Html:

<form onSubmit={e => this.searchItem(keyword, e)}>
  <img src="./images/icons/search-icon.png" className="search-icon" />
  <input type="search" autoFocus={!searchResult.scrollTop} value={keyword} onChange={e => this.setKeyword(e.target.value)} placeholder="搜索商城商品" onFocus={keyword?null:()=>this.switchTips(true)} />
  <span onClick={() => this.searchItem(keyword)}>搜索</span>
</form>

// or

<form onSubmit={e => this.searchItem(keyword, e)}>
  <img src="./images/icons/search-icon.png" className="search-icon" />
  <input type="search" autoFocus={!searchResult.scrollTop} value={keyword} onChange={e => this.setKeyword(e.target.value)} placeholder="搜索商城商品" onFocus={keyword?null:()=>this.switchTips(true)} />
  <input type="submit" value="搜索" />
</form>

 

 

 

Search Function:

searchItem(keyword, e) {
  if (e) e.preventDefault();
  keyword = keyword.trim();
  document.activeElement.blur(); // 很关键的一部,失去焦点,兼容IOS
  if (keyword) {
    SearchActions.byKeyword(keyword);
  }
}

 

 

Css Style:

.search-bar
  padding: .5em 1em;
  background: $bgColor;

  .search-icon
    position: absolute;
    margin-left: 10px;
    margin-top: 7px;
    width: 1.4em;

  input
    height: 30px;
    width: 73%;
    outline: none;
    border-radius: 15px;
    border $borderStyle
    padding-left: 2.6em;
    margin-right: 10px;

/* Or */
.search-bar
  padding: .5em 1em;
  background: $bgColor;

  .search-icon
    position: absolute;
    margin-left: 10px;
    margin-top: 7px;
    width: 1.4em;

  input[type=search]
    height: 30px;
    width: 73%;
    outline: none;
    border-radius: 15px;
    border $borderStyle
    padding-left: 2.6em;
    margin-right: 10px;

  input[type=submit]
    background none
    border: none;
    outline none

 

  • 大小: 19.5 KB
分享到:
评论

相关推荐

    记录RN开发中遇到的兼容性问题

    在React Native(RN)开发过程中,兼容性问题往往是开发者面临的一大挑战。这些问题主要涉及到不同操作系统,尤其是Android平台的差异。以下是一些常见的RN兼容性问题及其解决方案: 1. **文字超出容器** 当在...

    类似支付宝拖拽Item顺序变换

    10. **无障碍性(Accessibility)**:考虑到残障用户的需求,拖拽排序功能应提供键盘导航和辅助技术支持。 了解并掌握这些知识点,开发者就能构建出高效、易用且具有流畅体验的拖拽排序功能,像支付宝那样提升用户...

    html5手机端城市选择器

    3. **AJAX异步请求**:为了获取和更新城市数据,开发者可能使用AJAX(Asynchronous JavaScript and XML)技术,实现页面无刷新的数据交换。XMLHttpRequest对象是实现AJAX的核心,现在通常配合Promise或者async/await...

    多端同步使用轮播组件

    标题中的“多端同步使用轮播组件”指的是在不同设备平台上(如Web、iOS、Android等)实现统一的轮播图展示功能,并且这些展示能够实时同步,保持一致的用户体验。轮播组件(Slide)是网页和应用设计中常用的一种元素...

    TakashibaRyoya1.github.io

    8. **移动开发**:通过框架如React Native或Ionic,JavaScript可以用于开发原生移动应用程序,跨平台兼容iOS和Android。 9. **服务器端JavaScript**:Node.js允许JavaScript运行在服务器端,构建全栈应用,实现后端...

Global site tag (gtag.js) - Google Analytics