微信小程序中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 相关文章推荐
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
May 13 Javascript
jquery无法设置checkbox选中即没有变成选中状态
Mar 27 Javascript
javascript 自定义回调函数示例代码
Sep 26 Javascript
jQuery调取jSon数据并展示的方法
Jan 29 Javascript
js实现背景图片感应鼠标变化的方法
Feb 28 Javascript
JS实现焦点图轮播效果的方法详解
Dec 19 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
Sep 21 Javascript
详解auto-vue-file:一个自动创建vue组件的包
Apr 26 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
Sep 21 Javascript
vue和H5 draggable实现拖拽并替换效果
Jul 29 Javascript
Bootstrap FileInput实现图片上传功能
Jan 28 Javascript
JavaScript实现酷炫的鼠标拖尾特效
Feb 18 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内置的Math函数效率测试
2014/12/01 PHP
Yii2如何批量添加数据
2016/05/17 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
2020/04/06 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
jquery异步循环获取功能实现代码
2010/09/19 Javascript
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
js编码、解码函数介绍及其使用示例
2013/09/05 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
2015/09/06 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
Ant Design Pro 之 ProTable使用操作
2020/10/31 Javascript
使用webpack和rollup打包组件库的方法
2021/02/25 Javascript
python中xrange用法分析
2015/04/15 Python
浅析Python中的多重继承
2015/04/28 Python
详细介绍Python的鸭子类型
2016/09/12 Python
使用Python将Mysql的查询数据导出到文件的方法
2019/02/25 Python
深入浅析Python 中 is 语法带来的误解
2019/05/07 Python
关于ResNeXt网络的pytorch实现
2020/01/14 Python
python对接ihuyi实现短信验证码发送
2020/05/10 Python
Python xlwt模块使用代码实例
2020/06/10 Python
Python定义一个函数的方法
2020/06/15 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
英国最大的在线奢侈手表零售商:Jura Watches
2018/01/29 全球购物
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
早餐连锁店计划书
2014/01/08 职场文书
愚人节活动策划方案
2014/03/11 职场文书
公司开业庆典主持词
2014/03/21 职场文书
倡议书格式
2014/04/14 职场文书
关爱留守儿童倡议书
2014/04/15 职场文书
培训研修方案
2014/06/06 职场文书
CSS变量实现主题切换的方法
2021/06/23 HTML / CSS
如何优化vue打包文件过大
2022/04/13 Vue.js