uni-app使用uView的search搜索组件踩坑及解决

 更新时间:2026年02月10日 08:57:27   作者:爱拍照的小码农  
在开发H5移动端项目时,使用uView的search搜索组件在iOS系统下显示问题,解决方法是使用uni-app的input输入框,手动添加搜索和清除图标,避免使用confirm-type="search"导致重复图标

场景

在开发后H5移动端项目时,使用uView的search搜索组件时遇到这样一个问题,search组件在安卓系统下显示正常,在ios系统下会显示出手机自带的搜索图标,与search组件的图标有冲突,两个图标会同时显示出来

解决

利用uni-app自己的input输入框,自己修改样式,手动加上搜索图标和清除图标,图标是外部引入的阿里图标

【注意】:

不要给input输入框加上confirm-type=“search”,否则在ios系统下,还是会出现手机自带的搜索图标,和输入框的图标重复了

具体代码

如下所示:

<template>
	<view style="display: flex; justify-content: space-between">
		<view class="input-wrap" slot="default">
			<text class="iconfont icon-sousuo"></text>
			<input 
				class="uni-input" 
				placeholder-style="color:#999;" 
				placeholder="请输入搜索内容" v-model="searchValue"
				@confirm="searchRes" 
				@input="inputChange" 
				@focus="focusSearch" 
				focus 
			/>
			<text class="iconfont icon-igw-f-clean" v-if="searchValue" @tap.stop="clearWords"></text>
		</view>
		<view class="cancel-button" @tap="cancel">取消</view>
	</view>
</template>
data() {
    return {
      searchValue: "",
      currentPage: 1,
      pageSize: 10,
      showRes: false,
    };
 },
methods: {
	clearWords() {
      let vm = this;

      vm.searchValue = "";
      vm.inputChange();
    },
    inputChange() {
      let vm = this;

      vm.getNumber();
      return new Promise((resolve, reject) => {
        vm.$req
          .doRequest({
            alias: "dcs-search-globalSearch",
            query: {
              keyword: vm.searchValue,
              pageNum: 1,
              pageSize: 10,
              type: "0",
            },
          })
          .then((res) => {
            if (res.code == 0) {
              if (vm.$refs.searchKeyword) {
                vm.$refs.searchKeyword.searchList = res.data.filter(
                  (item) => item.title.length > 0
                );
              }
            }
            return resolve(res.data);
          });
      });
    },
}
<style scoped lang="less">
	.input-wrap {
		width: 80%;
		margin: 42rpx 0 10rpx 28rpx !important;
		background: #f7f7f7;

		padding-left: 24rpx;
		display: flex;
		align-items: center;
		height: 80rpx;
		border-radius: 10rpx;

		/deep/ uni-input {
			font-size: 28rpx;
			width: 446rpx;
		}

		.icon-sousuo {
			font-size: 40rpx;
			font-weight: bold;
			margin-right: 20rpx;
		}

		.icon-igw-f-clean {
			font-size: 32rpx;
			margin-left: 16rpx;
			color: #bfbfbf;

		}
	}
</style>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 关于layui的动态图标不显示的解决方法

    关于layui的动态图标不显示的解决方法

    今天小编就为大家分享一篇关于layui的动态图标不显示的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • JS中的eval 为什么加括号

    JS中的eval 为什么加括号

    JS中的eval 为什么加括号呢?相信很多朋友都不是很清楚吧,下面小编通过本教程帮助大家学习JS中的eval 为什么加括号,感兴趣的朋友了解下吧
    2016-04-04
  • JavaScript面向对象实现放大镜案例

    JavaScript面向对象实现放大镜案例

    这篇文章主要为大家详细介绍了JavaScript面向对象实现放大镜案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Js中parseInt的使用及注意事项

    Js中parseInt的使用及注意事项

    parseInt是一种字符串转数字的,下面这篇文章主要给大家介绍了关于Js中parseInt的使用及注意事项的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • JavaScript事件机制的剖析与优化详解

    JavaScript事件机制的剖析与优化详解

    在现代前端开发中,JavaScript事件处理是一个至关重要的部分,它能够使网页与用户交互,实现丰富的交互体验,然而,对JavaScript事件机制的深入理解是开发者成为优秀前端工程师的关键所在,本文将全面剖析JavaScript事件机制,需要的朋友可以参考下
    2023-12-12
  • 微信小程序使用canvas画图保存图片到手机相册代码示例

    微信小程序使用canvas画图保存图片到手机相册代码示例

    在微信小程序中利用canvas API绘制图形后,可通过CanvasContext.draw方法将图形渲染到画布,并使用wx.canvasToTempFilePath将画布导出为图片,再通过wx.saveImageToPhotosAlbum方法保存到手机相册,,需要的朋友可以参考下
    2024-09-09
  • 纯js实现轮播图效果

    纯js实现轮播图效果

    这篇文章主要为大家详细介绍了纯js实现轮播图效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • 前端防止用户重复提交js实现代码示例

    前端防止用户重复提交js实现代码示例

    这篇文章主要给大家介绍了关于前端防止用户重复提交js实现的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧
    2018-09-09
  • php对mongodb的扩展(小试牛刀)

    php对mongodb的扩展(小试牛刀)

    本文主要讲解php连接、操作mongodb,有需求的朋友可以参考下
    2012-11-11
  • Egg.js 中 AJax 上传文件获取参数的方法

    Egg.js 中 AJax 上传文件获取参数的方法

    这篇文章主要介绍了Egg.js 中 AJax 上传文件获取参数,需要的朋友可以参考下
    2018-10-10

最新评论