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


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 相关文章推荐
输入自动提示搜索提示功能的使用说明:sugggestion.txt
Sep 02 Javascript
JS实现拖动示例代码
Nov 01 Javascript
JavaScript中实现异步编程模式的4种方法
Sep 24 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
Aug 09 Javascript
JavaScript代码实现图片循环滚动效果
Mar 19 Javascript
JS图片放大效果简单实现代码
Sep 08 Javascript
vue.js表格组件开发的实例详解
Oct 12 Javascript
js运动事件函数详解
Oct 21 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
Nov 24 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
Dec 08 Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
Aug 19 Javascript
vue-router的HTML5 History 模式设置
Sep 08 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
web方式ftp
2006/10/09 PHP
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
2010/10/12 PHP
php学习笔记 类的声明与对象实例化
2011/06/13 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
PHP中curl_setopt函数用法实例分析
2015/04/16 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
2013/06/19 Javascript
JavaScript如何禁止Backspace键
2015/12/02 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
node使用promise替代回调函数
2018/05/07 Javascript
区别JavaScript函数声明与变量声明
2018/09/12 Javascript
vue计算属性computed的使用方法示例
2019/03/13 Javascript
js计算最大公约数和最小公倍数代码实例
2019/09/11 Javascript
d3.js实现图形缩放平移
2019/12/19 Javascript
python爬虫面试宝典(常见问题)
2018/03/02 Python
Python数据分析库pandas基本操作方法
2018/04/08 Python
Python装饰器原理与简单用法实例分析
2018/04/29 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
django框架F&amp;Q 聚合与分组操作示例
2019/12/12 Python
python烟花效果的代码实例
2020/02/25 Python
浅谈anaconda python 版本对应关系
2020/10/07 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
师范应届生语文教师求职信
2013/10/29 职场文书
网站开发实习生的自我评价
2013/12/11 职场文书
淘宝活动策划方案
2014/02/06 职场文书
一夜的工作教学反思
2014/02/08 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
代领毕业证委托书
2014/08/02 职场文书
保送生自荐信
2015/03/06 职场文书
python文件目录操作之os模块
2021/05/08 Python
详解CSS开发过程中的20个快速提升技巧
2021/05/21 HTML / CSS