微信小程序入门三: 简易form、本地存储


实例内容

  • 登陆界面
  • 处理登陆表单数据
  • 处理登陆表单数据(异步)
  • 清除本地数据

实例一: 登陆界面

app.json中添加登陆页面pages/login/login,并设置为入口。

保存后,自动生成相关文件(挺方便的)。

修改视图文件login.wxml

<!--pages/login/login.wxml-->
<view class="container"><form bindsubmit="formSubmit"><view class="row"><text>姓 名:</text><input type="text" name="userName" placeholder="请输入用户名" /></view><view class="row"><text>密 码:</text><input type="password" name="userPassword" placeholder="请输入密码" /></view><view class="row"><button type="primary" form-type="submit">登陆</button></view></form>
</view>

修改登陆样式login.wxss

/* pages/login/login.wxss */
.container{padding: 1rem;font-size: 0.9rem;line-height: 1.5rem;border-shadow: 1px 1px #0099CC;
}
.row{display: flex;align-items: center;margin-bottom: 0.8rem;
}
.row text{flex-grow: 1;text-align: right;
}
.row input{font-size: 0.7rem;color: #ccc;flex-grow: 3;border: 1px solid #0099CC;display: inline-block;border-radius: 0.3rem;box-shadow: 0 0 0.15rem #aaa;padding: 0.3rem;
}
.row button{padding: 0 2rem;
}

看下样式:

form相关属性:

属性名类型说明
report-submitBoolean是否返回formId用于发送模板消息
bindsubmitEventHandle携带form中的数据触发submit事件,event.detail = { value : {"name":"value"} , formId:"" }
bindresetEventHandle表单重置时会触发reset事件

这里用到了bindsubmit ,用于处理提交的表单数据。

input 相关属性

属性名类型默认值说明
valueString输入框的内容
typeStringtextinput的类型,有效值:text,number,idcard,digit,time,date
passwordBooleanfalse是否是密码类型
placeholderString输入框为空时占位符
placeholder-styleString指定placeholder的样式
placeholder-classStringinput-placeholder指定placeholder的样式类
disabledBooleanfalse是否禁用
maxlengthNumber140最大输入长度,设置为0的时候不限制最大长度
auto-focusBooleanfalse自动聚焦,拉起键盘。页面中只能有一个input设置auto-focus属性
focusBooleanfalse使得input获取焦点
bindchangeEventHandle输入框失去焦点时,触发bindchange事件,event.detail={value:value}
bindinputEventHandle除了date/time类型外的输入框,当键盘输入时,触发input事件,event.detail={value:value},处理函数可以直接return一个字符串,将替换输入框的内容。
bindfocusEventHandle输入框聚焦时触发,event.detail = {value:value}
bindblurEventHandle输入框失去焦点时触发,event.detail = {value:value}

button 相关属性

属性名类型默认值说明
sizeStringdefault有效值default, mini
typeStringdefault按钮的样式类型,有效值primary, default, warn
plainBooleanfalse按钮是否镂空,背景色透明
disabledBooleanfalse是否禁用
loadingBooleanfalse名称前是否带 loading 图标
formTypeString有效值:submit, reset,用于form组件,点击分别会触发submit/reset事件
hover-classStringbutton-hover指定按钮按下去的样式类。当hover-class="none"时,没有点击态效果

此Demo中将buttonformType设置为submit用于激活表单提交事件。


实例二: 处理登陆表单数据

修改login.js

// pages/login/login.js
Page({data:{userName:'',userPassword:'',},formSubmit:function(e){console.log(e.detail.value);//格式 Object {userName: "user", userPassword: "password"}//获得表单数据var objData = e.detail.value;if(objData.userName && objData.userPassword){// 同步方式存储表单数据wx.setStorageSync('userName', objData.userName);wx.setStorageSync('userPassword', objData.userPassword);//跳转到成功页面wx.navigateTo({url: '../index/index'})}},//加载完后,处理事件 // 如果有本地数据,则直接显示onLoad:function(options){//获取本地数据var userName = wx.getStorageSync('userName');var userPassword = wx.getStorageSync('userPassword');console.log(userName);console.log(userPassword);if(userName){this.setData({userName: userName});}if(userPassword){this.setData({userPassword: userPassword});}},onReady:function(){// 页面渲染完成},onShow:function(){// 页面显示},onHide:function(){// 页面隐藏},onUnload:function(){// 页面关闭}
})

这里使用到了wx.getStorageSyncwx.setStorageSync,这里说一下,上面这两个方法类似于HTML5的本地存储,属于同步存储方式。

这两个方法,使用很简单,列下参数:

wx.setStorageSync(KEY,DATA)

属性名类型必填说明
keyString本地缓存中的指定的key
dataObject/String需要存储的内容

wx.getStorageSync

属性名类型必填说明
KEYString本地缓存中的指定的key

修改一下login.wxml

        <view class="row"><text>姓 名:</text><input type="text" name="userName" placeholder="请输入用户名" value="{{userName}}" /></view><view class="row"><text>密 码:</text><input type="password" name="userPassword" placeholder="请输入密码" value="{{userPassword}}" /></view>

这个小实例,会在登陆的时候,将登陆信息存到本地存储,当下次登陆时,如果本地存储中有相应信息,则直接填写上。

效果(再一次运行后,自动填写上了信息):


实例三: 处理登陆表单数据(异步)

这里采用异步的方式存放数据。

修改一下login.js

// pages/login/login.js
Page({data:{userName:'',userPassword:'',},formSubmit:function(e){console.log(e.detail.value);//格式 Object {userName: "user", userPassword: "password"}//获得表单数据var objData = e.detail.value;if(objData.userName && objData.userPassword){// 同步方式存储表单数据wx.setStorage({key:'userName', data:objData.userName});wx.setStorage({key:'userPassword', data:objData.userPassword});//跳转到成功页面wx.navigateTo({url: '../index/index'})}},//加载完后,处理事件 // 如果有本地数据,则直接显示onLoad:function(options){var that = this;//获取本地数据wx.getStorage({key: 'userName',success: function(res){console.log(res.data);that.setData({userName: res.data});}});wx.getStorage({key: 'userPassword',success: function(res){console.log(res.data);that.setData({userPassword: res.data});}});},onReady:function(){// 页面渲染完成},onShow:function(){// 页面显示},onHide:function(){// 页面隐藏},onUnload:function(){// 页面关闭}
})

wx.setStorage(OBJECT)

属性名类型必填说明
keyString本地缓存中的指定的 key
dataObject/String需要存储的内容
successFunction接口调用成功的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

wx.getStorage(OBJECT)

属性名类型必填说明
keyString本地缓存中的指定的 key
successFunction接口调用的回调函数,res = {data: key对应的内容}
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

实例四: 清除本地数据

这里就不详细写了,直接介绍一下这两个清除本地数据的方法。

wx.clearStorage()

wx.clearStorageSync()

直接执行即可实现。


博客名称:王乐平博客

博客地址:http://blog.lepingde.com

CSDN博客地址:http://blog.csdn.net/lecepin


这里写图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序入门四: 导航栏样式、tabBar导航栏

实例内容 导航栏样式设置tabBar导航栏 实例一&#xff1a;导航栏样式设置 小程序的导航栏样式在app.json中定义。 这里设置导航&#xff0c;背景黑色&#xff0c;文字白色&#xff0c;文字内容测试小程序 app.json内容&#xff1a; {"pages":["pages/index…

理解 CSS 属性值语法

本文转载自&#xff1a;众成翻译 链接&#xff1a;http: //www.zcfy.cc/article/390 万维网联盟&#xff08;W3C&#xff09; 使用了一套特别的语法来定义 CSS 的属性值&#xff0c;能让所有的 CSS 属性都用。如果你曾看过 CSS 规范&#xff0c;你可能已经见过这套语法了。就像…

微信小程序入门五: wxml文件引用、模版、生命周期

实例内容 wxml文件引用&#xff08;include、import&#xff09;模版小程序生命周期 实例一: include方式引用header.wxml文件 文件引用对于代码的重用非常重要&#xff0c;例如在web开发中我们可以将公用的header部分和footer等部分进行提取&#xff0c;然后在需要的地方进行…

微信小程序入门六: WebSocket应用

实例内容 今天主要说一下微信的WebSocket接口以及在小程序中的使用。 WebSocket是什么&#xff08;简述&#xff09; 微信的WebSocket接口和HTML5的WebSocket基本一样&#xff0c;是HTTP协议升级来的&#xff0c;做为一个新的Socket在B/S上使用&#xff0c;它实现了浏览器与服…

一步一步实战HTML音乐播放器

在这里我用HTML5从头开始一步一步来制作一个简约的音乐播放器&#xff0c;大家可以参考一下&#xff0c;接下来正式开始。 音乐播放器效果 播放器分析 这里将播放器分两块来做&#xff1a; 视图层&#xff08;html css&#xff09;逻辑层 ( js ) 视图层分析 视图中包含&am…

实战React音乐播放器

上篇文章《一步一步实战HTML音乐播放器》中&#xff0c;我用HTMLJS CSS的方式一步步实现了一个音乐播放器&#xff0c;因为最近接触了一下React&#xff0c;感觉挺不错的&#xff0c;在这里我用React的方式实现一个同样的音乐播放器。 播放器功能 自动显示 专辑图片、歌手名、…

ASP.NET MVC5+EF6+EasyUI 后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】...

系列目录 上次的探讨没有任何结果&#xff0c;我浏览了大量的文章和个别系统的参考&#xff01;决定用Cache来做&#xff0c;这可能有点难以接受但是配合mvc过滤器来做效果非常好&#xff01; 由于之前的过滤器我们用过了OnActionExecuting这个方法来判断权限 现在在方法被执行…

理解关键的渲染路径

本文转载自&#xff1a;《Understanding the Critical Rendering Path》,原文地址&#xff1a;https: //bitsofco.de/understanding-the-critical-rendering-path/ 当浏览器从服务器接收到一个HTML页面的请求时&#xff0c;到屏幕上渲染出来要经过很多个步骤。浏览器完成这一系…

Openfire3.9.3源代码导入eclipse中开发配置指南(转载)

看到这篇文章的的网友应该已经安装了jdk,eclipse&#xff0c;我就不在安装这些开发工具上赘述了&#xff0c;附载一下openfire的下载地址&#xff1a;http://www.igniterealtime.org/downloads/index.jsp。1、下载源码openfire_src_3_9_3.zip&#xff0c;目前最新的版本是3.9.3…

Gulp在前端的常用操作实例

以前在做代码优化的时候&#xff0c;一般都用一些网上的在线工具来完成&#xff0c;写LESS的时候&#xff0c;一般用Koala来编译&#xff0c;感觉用起来也挺不错的。但是现在构建工具的出现&#xff0c;让以前做的那些繁琐操作变的更方便一些了&#xff0c;我在这里也用构建工具…

深入了解CSS字体度量,行高和vertical-align

本文英文出处:http: //iamvdo.me/en/blog/css-font-metrics-line-height-and-vertical-align 著作权归作者所有。 转载自https: //www.w3cplus.com/css/css-font-metrics-line-height-and-vertical-align.html line-height和vertical-align在CSS中是两个简单的属性。如此简单&…

HTML5 Canvas制作雷达图实战

雷达图又叫蜘蛛网图&#xff0c;是一种对各项数据查看很明显的表现图&#xff0c;在很多游戏中&#xff0c;对游戏中的每个角色的分析图一般也用这种图。 下面&#xff0c;用HTML5的Cavas来实现雷达图。 效果 一、创建Canvas var mW 400; var mH 400; var mCtx null;var c…

AlphaBlend

AlphaBlend实现透明效果&#xff0c;只是仅仅能针对某块区域进行alpha操作&#xff0c;透明度可设。 TransparentBlt能够针对某种颜色进行透明&#xff0c;只是透明度不可设。 AlphaBlend&#xff1a; BLENDFUNCTION bn; bn.AlphaFormat 0; bn.BlendFlags 0; bn.BlendOp AC_…

ECMAScript 6网页样式修正器

最近在看ES6这一方面的图书&#xff0c;在搜索的过程中发现了《ECMAScript 6 入门-阮一峰》&#xff0c;感觉还不错。因为我个从比较喜欢看纸质的书&#xff0c;就想把这本书给打印下来。 但是网页版的《ECMAScript 6 入门-阮一峰》设置的样式只适合在网页上查看&#xff0c;并…

PWA(Progressive Web App)入门系列:(一)PWA简介

前言 PWA做为一门Google推出的WEB端的新技术&#xff0c;好处不言而喻&#xff0c;但目前对于相关方面的知识不是很丰富&#xff0c;这里我推出一下这方面的入门教程系列&#xff0c;提供PWA方面学习。 什么是PWA PWA全称Progressive Web App&#xff0c;直译是渐进式WEB应用…

Vue DevTools可使用修正方法

因为工作要求&#xff0c;目前主要在用Vue.js技术栈做开发&#xff0c;调试是必不可少的&#xff0c;这里会用的Vue DevTools的调试工具&#xff0c;问题就出在这里&#xff0c;当用Vue DevTools做调试时&#xff0c;很多时候都不能用&#xff0c;提示没有监测到Vue&#xff0c…

ZRender实现粒子网格动画实战

注&#xff1a;本博文代码基于ZRender 3.4.3版本开发&#xff0c;对应版本库地址&#xff1a;ZRender 库。 效果 实现分析 通过上面显示的效果图&#xff0c;可以看出&#xff0c;这种效果就是在Canvas中生成多个可移动的点&#xff0c;然后根据点之间的距离来确定是否连线&am…

CSS动画实战:创建一个太极Loading图

这里主要是使用CSS的animation和伪类来构建&#xff0c;分析设定关键帧的执行顺序和时间段。 效果 动画分析 首先通过效果对动画执行进行一下分析&#xff1a; 边框的四条边进行按顺序动画加载 。矩形边框变为圆行边框。太极图内部图案渐渐出现。太极图旋转。整个动画逆序执…

PWA(Progressive Web App)入门系列:(二)相关准备

前言 在上一章中&#xff0c;对PWA的相关概念做了基本介绍&#xff0c;了解了PWA的组成及优势。为了能够更快的进入PWA的世界&#xff0c;这一章主要对在PWA开发中&#xff0c;需要注意的问题&#xff0c;运行的环境及调试工具做介绍说明。 浏览器要求 因为目前各浏览器对于…

PWA(Progressive Web App)入门系列:(三)PWA关键技术Manifest

前言 前面说过&#xff0c;让Web App能够达到Native App外观体验的主要实现技术就是PWA中的manifest技术&#xff0c;本章会详细说明manifest的实现&#xff0c;及各个参数的具体含义&#xff0c;还将了解如何定义Web App的启动图标、启动样式等。 简介 manifest是一种简单的…