vue中将光标定位到Input上的问题

  1 <template>
  2     <div class="person_email">
  3         <div class="contain_email">
  4             <x-header :left-options="{backText: ''}">修改邮箱</x-header>
  5             <img class="qrcodeimg" src="../../../assets/new/email.png" alt="">
  6             <p>当前邮箱:&nbsp;&nbsp;{{email}}</p>
  7             <group class='input_'>
  8                 <x-input ref="email" placeholder="输入邮箱" v-model="new_email" @on-click-clear-icon="clear_Email">
  9                 </x-input>
 10             </group>
 11             <group title="" class='input_'>
 12                 <x-input placeholder="验证码" v-model="psw" @on-click-clear-icon="clear_psw">
 13                     <x-button slot="right" type="primary" mini @click.native="get_psw"  v-bind:disabled="isDisabled">{{post_psw}}</x-button>
 14                 </x-input>
 15             </group>
 16             <div class="button_">
 17                 <x-button type="primary" @click.native="submit">提交</x-button>
 18             </div>
 19         </div>
 20     </div>
 21 </template>
 22 <script>
 23     import { updatePhomail } from '@/controller/corp/update_phomail'
 24     import { changeEmail } from '@/controller/corp/change_email'
 25     import dateutil from '@/util/date'
 26     import { XHeader, Cell, Group, Panel, Confirm, CellBox, XInput, XButton } from 'vux'
 27     import KpBottomBtn from '@/plugin/bottombtn'
 28     export default {
 29         name: 'mine',
 30         props: ['mine'],
 31         data() {
 32             return {
 33                 email: JSON.parse(sessionStorage.getItem('agentStaffRes')).agentStaffEmail || "无邮箱信息",
 34                 new_email: "",
 35                 psw: "",
 36                 time:60,
 37                 isDisabled:false,
 38                 post_psw:'获取验证码'
 39                 
 40             }
 41         },
 42         components: {
 43             XHeader,
 44             Group,
 45             Cell,
 46             Panel,
 47             KpBottomBtn,
 48             Confirm,
 49             CellBox,
 50             XInput,
 51             XButton
 52         },
 53         computed: {
 54             profile() {
 55                 let corpRole = ''
 56                 let isInner = this.agentLoginStaff ? this.agentLoginStaff.agentType : ''
 57                 if(isInner) {
 58                     corpRole = isInner === 0 ? '(外部账号)' : '(内部账号)'
 59                 } else {
 60                     corpRole = ''
 61                 }
 62                 let profile = {
 63                     src: require('../../../assets/user_default.png'),
 64                     title: this.agentLoginStaff ? (this.agentLoginStaff.agentStaffName + ' | ' + this.agentLoginStaff.agentStaffPhone) : '',
 65                     desc: this.agentLoginStaff ? this.agentLoginStaff.agentName + corpRole : ''
 66                 }
 67                 if(this.agentLoginStaff) {
 68                     profile.src = this.agentLoginStaff.agentStaffAvatar
 69                 }
 70                 return [profile]
 71             }
 72         },
 73         mounted() {
 74             this.$refs.email.focus()
 75         },
 76         methods: {
 77             get_psw() { //验证邮箱接口
 78                 let _this = this;
 79                 _this.isDisabled = true;
 80                 let interval = window.setInterval(function() {
 81                     _this.post_psw =  _this.time + 's后重试';
 82                     --_this.time;
 83                     if(_this.time < 0) {
 84                         _this.post_psw = "获取验证码";
 85                         _this.time = 10;
 86                         _this.isDisabled = false;
 87                         window.clearInterval(interval);
 88                     }
 89                 }, 1000);
 90                 changeEmail({
 91                     email: this.new_email
 92                 })
 93             },
 94             submit() { //提交            
 95                 updatePhomail({
 96                     accountId: JSON.parse(sessionStorage.getItem('agentStaffRes')).accountId,
 97                     type: 2,
 98                     code: this.psw,
 99                     number: this.new_email,
100                     callback: res => {
101                         let temp = JSON.parse(sessionStorage.agentStaffRes)
102                         temp.agentStaffEmail = this.new_email
103                         sessionStorage.setItem('agentStaffRes', JSON.stringify(temp))
104                         this.$router.push('/person_center')
105                     }
106                 })
107             },
108             clear_Email(){
109                 this.new_email = ''
110             },
111             clear_psw(){
112                 this.psw = ''
113             }
114         }
115     }
116 </script>
117 <style lang="less">
118     .contain_email {
119         img {
120             display: block;
121             margin: auto;
122             margin-top: 30px;
123             margin-bottom: 30px;
124         }
125         p {
126             text-align: center;
127             font-weight: bold;
128         }
129         .input_ {
130             width: 329px;
131             margin: auto;
132             display: block;
133         }
134         .button_ {
135             width: 329px;
136             margin: auto;
137             height: 44px;
138             margin-top: 44px;
139         }
140     }
141 </style>

这样光标在此页面的时候就可以定位到input标签上。

环境:要引入vux,脚手架的环境才能复制看到效果,所以看方法就好了。

用refs的时候如果是普通DOM元素就是指向DOM元素

<input type="text"  id="input" ref="input"/ >//此时refs和DOM的效果是一致

console.log(1111111111,this.$refs.input1,documentElement.get)Byid("input1")

如果是再组件上用就会指向组件实例,被解析成为了一个对象的形式。

当v-for和ref一起连用的时候也是返回一个对象。

<ul v-for="item in this.list">
        <li ref="item">{{item.name}}</li>
    </ul>
  </div>
</template>

<script>
    
// @ is an alias to /src
import HelloWorld from '@/components/HelloWorld.vue'

export default {
  name: 'home',
  components: {
    HelloWorld
  },
  data:function(){// 在实例中data是对象, 在组件中data就得是函数返回对象
      return{
          list:[{name:111},{name:2222}] 
      }
               
  },
  methods:{
      ko() {
          console.log(document.getElementById("df"))
          console.log(this.$refs.df)
          console.log(this.$refs.item)//(2)[li,li]
      }
  }
}
</script>

 

转载于:https://www.cnblogs.com/lujunan/p/10239665.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值