vue,如何封装一个密码输入框表单,让该输入框在查看和编辑的时候,默认6个点?

vue,如何封装一个密码输入框表单,让该输入框在查看和编辑的时候,默认6个点?

如图,目前有个需求就是,表单里有个密码输入项

在查看和编辑的时候,后端是不会返回真实的密码的,在表单详情的数据里返回空值

所以需要以上的效果来模拟一个虚假的密码已经输入的项
第2行查看模式下点击编辑按钮会切换为第3行编辑状态,然后点击,会马上清空输入框的内容
(此时如果输入值则会触发表单验证,否则不会触发。)

如果用户在编辑状态没有点击密码项,直接提交,则会判断密码是否有修改,修改的话提交密码的数据,否则传null给后台

我之前也有问过类似的问题:https://segmentfault.com/q/10...

但具体实施过程中,因为我的密码项都做了(长度在8-20之内,并且同时含有字母和数字)的blur和提交时的校验,导致无法真正实现我想要的效果

并且


回答:

https://codepen.io/pantao/pen...

代码如下,测试如上。

<template>

<div id="app">

<input

v-model="form.password"

:placeholder="focusing ? '请输入密码' : '******'"

:disabled="!editing"

@focus="focusing = true"

@blur="focusing = false"

:type="viewable ? 'text' : 'password'"

/>

<button @click="editing = !editing;">{{ editing ? '取消' : '编辑'}}</button>

<button v-if="editing" @click="viewable = !viewable">{{ viewable ? '不可见' : '可见'}}</button>

</div>

</template>

<script>

export default {

data() {

return {

form: {

password: ''

},

focusing: false,

editing: false,

viewable: false

};

},

watch: {

editing(val) {

if (!val) {

this.form.password = '';

}

}

}

};

</script>

<!-- Use preprocessors via the lang attribute! e.g. <style lang="scss"> -->

<style>

#app {

font-family: Avenir, Helvetica, Arial, sans-serif;

text-align: center;

color: #2c3e50;

margin-top: 60px;

}

input {

padding: 0 10px;

line-height: 3em;

}

</style>

以上是 vue,如何封装一个密码输入框表单,让该输入框在查看和编辑的时候,默认6个点? 的全部内容, 来源链接: utcz.com/p/936215.html

回到顶部