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

发布于 2022-09-30 23:10:24 字数 538 浏览 20 评论 0

image.png

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

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

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

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

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

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

并且

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

纵情客 2022-10-07 23:10:24

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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文