微信小程序中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 相关文章推荐
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
Jul 31 Javascript
详解JavaScript基于面向对象之创建对象(1)
Dec 10 Javascript
AngularJS中的指令全面解析(必看)
May 20 Javascript
如何判断出一个js对象是否一个dom对象
Nov 24 Javascript
微信小程序 设置启动页面的两种方法
Mar 09 Javascript
Vue.js学习教程之列表渲染详解
May 17 Javascript
详解vue.js的事件处理器v-on:click
Jun 27 Javascript
js数组常用最重要的方法
Feb 04 Javascript
浅谈Vue页面级缓存解决方案feb-alive(上)
Apr 14 Javascript
Jquery ajax书写方法代码实例解析
Jun 12 jQuery
vue中el-input绑定键盘按键(按键修饰符)
Jul 22 Javascript
vue使用Google Recaptcha验证的实现示例
Aug 23 Vue.js
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文章采集URL补全函数(FormatUrl)
2012/08/02 PHP
PHP 实现判断用户是否手机访问
2015/01/21 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
2016/08/17 Javascript
简单理解js的prototype属性及使用
2016/12/07 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
WebSocket的简单介绍及应用
2019/05/23 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
2019/09/05 Javascript
Javascript中Math.max和Math.max.apply的区别和用法详解
2020/08/24 Javascript
详解JavaScript作用域、作用域链和闭包的用法
2020/09/03 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
浅析vue中的nextTick
2020/12/28 Vue.js
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
Python处理json字符串转化为字典的简单实现
2016/07/07 Python
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
python批量解压zip文件的方法
2019/08/20 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
对于没有初始化的变量的初始值可以作怎样的假定
2014/10/12 面试题
学生会竞选演讲稿学习部
2014/08/25 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
2016年党员创先争优承诺书
2016/03/25 职场文书
2016年“11.11”光棍节活动总结
2016/04/05 职场文书