1、使用van-form组件实现表单
ps:绑定密码框的type属性。
<van-form @submit="onSubmit"> <van-field v-model="username" name="用户名" label="用户名" placeholder="用户名" :rules="[{ required: true, message: '请填写用户名' }]" left-icon="user-o" /> <van-field v-model="password" :type="showornot" name="密码" label="密码" placeholder="密码" :rules="[{ required: true, message: '请填写密码' }]" left-icon="lock" clearable /> <div style="margin: 16px;"> <van-button round block type="info" native-type="submit">提交</van-button> </div> </van-form>
2、在密码框使用插槽
ps:由于icon标签不能直接提供点击事件,使用span标签包裹住.
<van-field v-model="password" :type="showornot" name="密码" label="密码" placeholder="密码" :rules="[{ required: true, message: '请填写密码' }]" left-icon="lock" clearable > <template #button> <span @click="isShow"> <van-icon name="closed-eye" v-if="show" /> <van-icon name="eye-o" v-else /> </span> </template> </van-field>
3、写好方法与变量
export default {
name: 'Login',
data() {
return {
username: '',
password: '',
show: true,
showornot: 'password'
}
},
methods: {
onSubmit(values) {
console.log('submit', values)
},
isShow() {
this.show = !this.show
if (this.show === true) {
this.showornot = 'password'
} else {
this.showornot = 'text'
}
}
}
}
实现效果:
点击密码框最右侧小图标