美文网首页
微信小程序 - 7.组件(form 表单提交和取值)

微信小程序 - 7.组件(form 表单提交和取值)

作者: GiottoYLY | 来源:发表于2020-03-17 14:51 被阅读0次
    1. 第一步、添加 from 控件,并为其指定 bindsubmit 属性值。

    2. 第二步、添加输入控件到 form 中,并为其指定 name 属性值。

    3. 第三步、添加 button 控件,并为其指定 form-type="submit"。

    4. 第四步、在 js 中取值时,用 e.detail.value.xxx 或 e.detail.value["xxx"],其中 xxx 为 name 属性值。
      wxml文件

       <form bindsubmit="reg">
           <view>
                <text>用户:</text>
                <input type="text" name="username"></input>
           </view>
           <view>
                <text>密码:</text>
                <input type="password" name="password"></input>
           </view>
           <view>
                <checkbox-group name="cb">
                <checkbox value="A">乒乓球</checkbox>
                <checkbox value="B" checked="false">羽毛球</checkbox>
                <checkbox value="C" checked="{{checked}}">排球</checkbox>
                </checkbox-group>
           </view>
           <view>
                <radio-group name="r">
                     <radio value="a">初级</radio>
                     <radio value="b">中级</radio>
                     <radio value="c">高级</radio>
                </radio-group>
           </view>
           <view>
              <button type="primary" form-type="submit">注册</button>
           </view>
       </form>
      

    js文件

    //提交方法reg
    reg:function(e){
        console.log(e.detail.value);
        wx.showToast({
            title: e.detail.value["cb"].join(","),//把cb的每一个原始转化为字符串,用,连接起来
            icon: "success",
            duration:2000
        })
    },
    

    打印结果:

    {username: "aaa", password: "123456", cb: Array(2), r: "b"}
       1.  cb: (2) ["B", "A"]
       2. password: "123456"
       3. r: "b"
       4. username: "aaa"
    

    重要说明

    1. <input type="text" 中的 type 和 HTML 中的不同,具体为:
      text:不必解释
      number:数字键盘(无小数点)
      idcard:数字键盘(无小数点、有个 X 键)
      digit:数字键盘(有小数点)
      注意:number 是无小数点的,digit 是有小数点的。
      <input password /> 表示密码框(个人认为太怪异,不如直接叫 password 标签的好)。

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

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

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

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

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

    相关文章

      网友评论

          本文标题:微信小程序 - 7.组件(form 表单提交和取值)

          本文链接:https://www.haomeiwen.com/subject/upstyhtx.html