微信小程序实现搜索框功能及踩过的坑


Posted in Javascript onJune 19, 2020

先上代码:

wxml:

<!-- 顶部搜索框 -->
<view class="inputcontainer">
 <view class="input" catchtap="inputSwitchStatus" wx:if="{{!edit}}">搜索商品</view>
 <view class="edit" wx:else>
  <form bindsubmit="inputSearch" bindreset="inputReset">
  <text class="searchicon"></text>
  <input focus="true" type="text" name="search-input" confirm-type='search' bindconfirm="inputSearch"/>
  <button class="deleteicon cancel-btn-default-style" catchtap="inputReset" hover-class="clear-btn-hover" formType="reset"></button>
  <button class="cancel cancel-btn-default-style" hover-class="search-btn-hover" formType="submit">搜索</button>
  </form>  
 </view> 
</view>

效果:

 微信小程序实现搜索框功能及踩过的坑 

上面两张图片分别是搜索框的两种状态,非搜索状态和搜索状态,样式很简单,逻辑也不复杂,但是小程序的搜索和网页的不一样,网页可以直接添加点击事件但是,小程序不行,因为小程序的搜索和输入分开,如果使用data-的话无疑会产生很多多余的代码,庆幸的是小程序提供了form可以整合搜索和输入,具体和已参考官方API。
本文主要讲的是踩过的坑,
①搜索和重置必须使用按钮,因为要使用button的formType。
②搜索事件和重置事件是绑定到form上的,而不是button。
③input必须添加一个name属性,例如name=”search-input”,否则你是用e.detail.value是取不到值的
④confirm-type='search'是控制你的软键盘的右下角显示的文字
⑤到目前为止你的搜索按钮可以正常使用,但是点击的软键盘的搜索按钮,没有任何效果,如果想要软键盘的搜索按钮同样可以使用,首先在输入框中添加indconfirm=”inputSearch”事件,然后测试你会发现,现在依然无法使用,但是却使用了函数,这是因为当你使用软键盘进行搜索时,获取的值的方式是e.detail.value就可以而不是e.detail.value‘search-input',所以你需要修改一下你的搜索函数:

inputSearch: function (e) { //输入框根据查询条件搜索点击事件
 // 获取用户输入框中的值
 let inputVaue = e.detail.value['search-input'] ? e.detail.value['search-input'] : e.detail.value;
 if (!inputVaue) {
  throw new Error('search input contents con not empty!');
  return ;
 }
 let searchUrl = "/product/index?keyword=" + inputVaue + "&fromindex=true";
 this.converterUrlAndRedirect(searchUrl);
 }

注意:

let inputVaue = e.detail.value[‘search-input'] ? e.detail.value[‘search-input'] : e.detail.value;
,现在你的小程序搜索框可以使用了。

另外有一个布局问题,ios的小程序对position: fixed;很不友好,所有尽量使用position: absolute;代替它

总结

到此这篇关于微信小程序实现搜索框功能及踩过的坑的文章就介绍到这了,更多相关微信小程序实现搜索框内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript DOM 学习第二章 编辑文本
Feb 19 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
May 12 Javascript
读jQuery之十二 删除事件核心方法
Jul 31 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
May 17 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
Aug 30 Javascript
jQuery动态改变多行文本框高度的方法
Sep 07 Javascript
JS实现根据用户输入分钟进行倒计时功能
Nov 14 Javascript
JS简单实现点击跳转登陆邮箱功能的方法
Oct 31 Javascript
用jquery获取select标签中选中的option值及文本的示例
Jan 25 jQuery
JS函数内部属性之arguments和this实例解析
Oct 07 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
May 09 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
Jul 19 Javascript
微信小程序返回上一级页面的实现代码
Jun 19 #Javascript
小程序中的箭头函数的具体使用
Jun 19 #Javascript
在VUE style中使用data中的变量的方法
Jun 19 #Javascript
深入分析JavaScript 事件循环(Event Loop)
Jun 19 #Javascript
原生JS实现微信通讯录
Jun 18 #Javascript
vue+element-ui表格封装tag标签使用插槽
Jun 18 #Javascript
js实现ajax的用户简单登入功能
Jun 18 #Javascript
You might like
PHP自动生成月历代码
2006/10/09 PHP
用Php实现链结人气统计
2006/10/09 PHP
php xfocus防注入资料
2008/04/27 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
smarty模板引擎基础知识入门
2015/03/30 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
精心挑选的15款优秀jQuery 本特效插件和教程
2012/08/06 Javascript
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
浅谈javascript中for in 和 for each in的区别
2015/04/23 Javascript
纯js代码实现简单计算器
2015/12/02 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
深入浅析JavaScript函数前面的加号和叹号
2016/07/09 Javascript
AngularJS教程之简单应用程序示例
2016/08/16 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
2021/02/26 Vue.js
[51:14]LGD vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
python实现感知器算法详解
2017/12/19 Python
Python单元测试实例详解
2018/05/25 Python
pandas去重复行并分类汇总的实现方法
2019/01/29 Python
Flask配置Cors跨域的实现
2019/07/12 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
银行柜员应聘推荐信范文
2013/11/24 职场文书
走群众路线学习笔记
2014/11/06 职场文书
招标保密承诺书
2015/01/20 职场文书
暑期社会实践新闻稿
2015/07/17 职场文书
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python