zoukankan      html  css  js  c++  java
  • 获取微信小程序的input控件的value

    习惯了vue的方式,我以为javascript世界默认是双向绑定的。可...微信小程序除外,整个文档也没有直接告诉你怎么去获取一个input的录入值,这几乎是所有文档中仅次于"hello world"的说明了。

    如何获取呢?大体上两种办法:

    一是利用控件本身的事件,不断的刷新data里的某个属性值,常用是bindinput、bindblur。前者是录入时处理,后者是控件失去焦点时处理。如果每个控件都需要一个绑定的方法,这当然是可怕的。利用bindblur说明一下如何使用一个方法来解决全部控件的绑定吧。

    先是js的代码,节选一部分如下:

    data: { 
        userinfo: {}, //提交的数据
      },
      // input框输入失去焦点时判断
      inputWatch:function (e) {
        console.log(e.currentTarget);
        let userinfo = this.data.userinfo;
        let item = e.currentTarget.dataset.name;
        userinfo[item] = e.detail.value;
        this.setData({
          userinfo
        });
        console.log('userinfo', userinfo)
      },
    

      wxml中需要绑定事件,定义dataset,加上value显示的设置

    <input class="weui-input"  bindblur="inputWatch" data-name='userphone' value="{{userinfo.userphone}}" placeholder="请输入联系电话" />
    

      有没有一种很累的感觉。

    第二种办法是使用form来获取录入的值,wxml需要指定name,比上面稍省一点

        <form bindsubmit='onNext'>
            <input class="weui-input"  name="userphone"  value="{{userinfo.userphone}}" placeholder="请输入联系电话" />
            <button class="weui-btn" formType="submit" type='primary'>下一步</button>
       </form>
    

      以下是js文件的onNext方法

    onNext:function(data){    
         //暂存当前表单信息
         console.log(data.detail.value.userphone)     
    },
    

      

    以上两种办法不能混合使用。原因是inputWatch调用了setData,而没有绑定事件的控件的值还没有提交到userinfo.

  • 相关阅读:
    js实现将字符串里包含手机号的中间四位替换为****
    草稿for套for
    js实现将时间戳转换成2017-05-06 09:03:02
    时间日期校验接口
    JS延迟导航nav
    nav导航
    鼠标滚动请求加载
    常用开源Jabber(XMPP) IM服务器介绍(转)
    01.base-v1.js
    Haproxy安装及配置(转)
  • 原文地址:https://www.cnblogs.com/kevin-Y/p/12586626.html
Copyright © 2011-2022 走看看