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


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 相关文章推荐
prototype.js的Ajax对象
Sep 23 Javascript
javascript 点击整页变灰的效果(可做退出效果)。
Jan 09 Javascript
深入解析JavaScript中的变量作用域
Dec 06 Javascript
input输入框鼠标焦点提示信息
Mar 17 Javascript
JavaScript实现LI列表数据绑定的方法
Aug 04 Javascript
详解JavaScript函数对象
Nov 15 Javascript
js表单元素checked、radio被选中的几种方法(详解)
Aug 22 Javascript
bootstrap导航条实现代码
Dec 28 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
Jan 03 Javascript
VUE预渲染及遇到的坑
Sep 03 Javascript
vue2.0 + ele的循环表单及验证字段方法
Sep 18 Javascript
vue 获取视频时长的实例代码
Aug 20 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 文件上传功能实现代码
2009/06/24 PHP
注册页面之前先验证用户名是否存在的php代码
2012/07/14 PHP
优化PHP代码技巧的小结
2013/06/02 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
2015/01/26 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
PHP面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
FileUpload上传图片(图片不变形)
2010/08/05 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
事件委托与阻止冒泡阻止其父元素事件触发
2014/09/02 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
python备份文件的脚本
2008/08/11 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
详解Python如何生成词云的方法
2018/06/01 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
python实现周期方波信号频谱图
2018/07/21 Python
python3.4 将16进制转成字符串的实例
2019/06/12 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
北京捷通华声语音技术有限公司Java软件工程师笔试题
2012/04/10 面试题
电子信息专业学生自荐信
2013/11/09 职场文书
寄语学生的话
2014/04/10 职场文书
大学竞选班长演讲稿
2014/04/24 职场文书
党支部党的群众路线对照检查材料
2014/09/24 职场文书
2014年后勤工作总结
2014/11/18 职场文书
订货会邀请函
2015/01/31 职场文书
光荣之路观后感
2015/06/12 职场文书
员工聘用合同范本
2015/09/21 职场文书
《月光曲》教学反思
2016/02/16 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书