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


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 相关文章推荐
js下用eval生成JSON对象
Sep 17 Javascript
js下通过prototype扩展实现indexOf的代码
Dec 08 Javascript
javascript判断并获取注册表中可信任站点的方法
Jun 01 Javascript
js 求时间差的实现代码
Apr 26 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
Aug 02 Javascript
Vue.js每天必学之过渡与动画
Sep 06 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
Jul 05 jQuery
微信小程序scroll-view仿拼多多横向滑动滚动条
Apr 21 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
Sep 27 Javascript
JavaScript 判断iPhone X Series机型的方法
Jan 28 Javascript
微信小程序new Date()方法失效问题解决方法
Jul 29 Javascript
小程序采集录音并上传到后台
Nov 22 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/12/06 PHP
PHP 面向对象实现代码
2009/11/11 PHP
curl和libcurl的区别简介
2015/07/01 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
PHP用swoole+websocket和redis实现web一对一聊天
2019/11/05 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
Jquery 设置标题的自动翻转
2009/10/03 Javascript
仿新浪微博登陆邮箱提示效果的js代码
2013/08/02 Javascript
javascript模拟命名空间
2015/04/17 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
AngularJS延迟加载html template
2016/07/27 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
JavaScript 字符串常用操作小结(非常实用)
2016/11/30 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
浅析vue中的MVVM实现原理
2019/03/04 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
[58:00]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第二场 2月7日
2021/03/11 DOTA
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
解决python 找不到module的问题
2020/02/12 Python
Django admin组件的使用
2020/10/24 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
学习十八大的心得体会
2014/09/12 职场文书
音乐剧猫观后感
2015/06/04 职场文书
亲戚关系证明
2015/06/24 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
智慧人生:永远不需要向任何人解释你自己
2019/08/20 职场文书
python 调用js的四种方式
2021/04/11 Python
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL
mysql查找连续出现n次以上的数字
2022/05/11 MySQL