首页 > 热点 > 微信 > 正文

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

2024-07-22 01:17:09
字体:
来源:转载
供稿:网友

微信小程序中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 属性。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表