微信小程序中form 表单提交和取值实例详解


Posted in Javascript onApril 20, 2017

微信小程序中form 表单提交和取值实例详解

我们知道,如果我们直接给 input 添加 bindinput,比如:<input bindinput="onUsernameInput" />,那么可以在 onUsernameInput 中直接使用 e.detail.value,即:

onUsernameInput : function(e) {
  e.detail.value;
}

但是,如果有多个输入控件,我们不可能为每个控件添加 bindinput、bindchange 这类方法来获取值。我们得这样做:

第一步、添加 from 控件,并为其指定 bindsubmit 属性值。
第二步、添加输入控件到 form 中,并为其指定 name 属性值。
第三步、添加 button 控件,并为其指定 form-type="submit"。
第四步、在 js 中取值时,用 e.detail.value.xxx 或 e.detail.value["xxx"],其中 xxx 为 name 属性值。

.wxml 代码

<form bindsubmit="reg">

  <view>用户:<input type="text" name="username" /></view>

  <view>密码:<input password name="password" /></view>

  <view>兴趣:<checkbox-group name="cb">
    <label><checkbox value="A" />乒乓球</label>
    <label><checkbox value="B" checked="false" />羽毛球</label>
    <label><checkbox value="C" checked="{{checked}}" />排球</label>
  </checkbox-group></view>

  <view>级别:<radio-group name="r">
    <label><radio value="a" />初级</label>
    <label><radio value="b" />中级</label>
    <label><radio value="c" />高级</label>
  </radio-group></view>

  <view><button type="primary" form-type="submit">注册</button></view>

</form>

.js 代码

reg: function(e) {
  console.log(e.detail.value);
  
  wx.showToast({
    title: e.detail.value["cb"].join(","),
    icon: "success",
    duration: 2000
  });
}

重要说明

<input type="text" 中的 type 和 HTML 中的不同,

微信小程序的 input 有个属性叫 type,这个 type 有几个可选值:

text:不必解释
number:数字键盘(无小数点)
idcard:数字键盘(无小数点、有个 X 键)
digit:数字键盘(有小数点)

注意:number 是无小数点的,digit 是有小数点的。我严重怀疑这是个 BUG。

<input password /> 表示密码框(个人认为太怪异,不如直接叫 password 标签的好)。

“羽毛球”那一项,我们是故意写作 checked="false" 的,我们试图使之初始不选中,但是不如我们愿,它却选中了,这和 HTML 一样,并不认 checked 属性值,只认有没有这个标记。不过如果我们使用 {{}} 则不一样,比如“排球”一项,选中与否就受 data.checked 的影响。

input 的取值如前面所述,用 e.detail.value.xxx 或 e.detail.value["xxx"],其中 xxx 为 name 属性。

checkbox 的取值也是类似 input,不过 xxx 为 checkbox-group 的 name,取出来的值是数组,由选中项的 value 组成,比如选中了“乒乓球”、“排球”,结果就是:["1", "3"]。特别说明,这个顺序与我们选择的先后有关,比如我们先选择“排球”,再选择“乒乓球”,结果就是["3", "1"]。

radio 的取值和 input 一样,返回的是选中的那一项的 value,没有选中项就是 ""。

如果不知道值类型,也可用 console.log(e.detail.value); 将所有值输出来,然后在调试 Console 中观察值,再来取。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
Jquery 快速构建可拖曳的购物车DragDrop
Nov 30 Javascript
利用window.name实现windowStorage代码分享
Jan 02 Javascript
javascript定义变量时带var与不带var的区别分析
Jan 12 Javascript
js同源策略详解
May 21 Javascript
理解Javascript的动态语言特性
Jun 17 Javascript
JavaScript实现广告的关闭与显示效果实例
Jul 02 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
Jun 21 Javascript
原生js轮播(仿慕课网)
Feb 15 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
May 03 Javascript
npm 更改默认全局路径以及国内镜像的方法
May 16 Javascript
vue跳转页面的几种方法(推荐)
Mar 26 Javascript
JavaScript 实现页面滚动动画
Apr 24 Javascript
ES6新特性一: let和const命令详解
Apr 20 #Javascript
javascript 正则表达式分组、断言详解
Apr 20 #Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
Apr 20 #jQuery
JS利用cookies设置每隔24小时弹出框
Apr 20 #Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
Apr 20 #Javascript
addEventListener()与removeEventListener()解析
Apr 20 #Javascript
详解用vue-cli来搭建vue项目和webpack
Apr 20 #Javascript
You might like
PHP mb_convert_encoding文字编码的转换函数介绍
2011/11/10 PHP
php三元运算符知识汇总
2015/07/02 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
php微信公众号开发之校园图书馆
2018/10/20 PHP
JS在IE和FF下attachEvent,addEventListener学习笔记
2009/11/26 Javascript
js 固定悬浮效果实现思路代码
2013/08/02 Javascript
深入理解javascript原型链和继承
2014/09/23 Javascript
jQuery中click事件的定义和用法
2014/12/20 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
Javascript 两种刷新方法以及区别和适用范围
2017/01/17 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
Python创建日历实例
2014/08/21 Python
简单实现python爬虫功能
2015/12/31 Python
python3 map函数和filter函数详解
2019/08/26 Python
python如何设置静态变量
2020/09/07 Python
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
Html5 webview元素定位工具的实现
2020/08/07 HTML / CSS
打造经典复古风格的品牌:Alice + Olivia(爱丽丝+奥利维亚)
2016/09/07 全球购物
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
接口中的方法可以是abstract的吗
2015/07/23 面试题
J2EE中的容器都包括哪些
2013/08/21 面试题
考核评语大全
2014/04/29 职场文书
品德评语大全
2014/05/05 职场文书
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
服务明星事迹材料
2014/12/29 职场文书
销售经理岗位职责范本
2015/04/02 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
肖申克救赎观后感
2015/06/02 职场文书
Ajax实现异步加载数据
2021/11/17 Javascript