首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue 3输入模式

Vue 3输入模式
EN

Stack Overflow用户
提问于 2022-09-18 07:50:58
回答 3查看 158关注 0票数 3

我想要创建输入,如果模式不匹配,我可以用空字符替换输入的字符。

模板:

代码语言:javascript
复制
<input
  type="text"
  :value="val"
  @input="input"
/>

剧本:

代码语言:javascript
复制
import { ref } from "vue";
export default {
  setup() {
    let val = ref("");
    const input = ({ target }) => {
      val.value = target.value.replace(/[^\d]/g, "");
    };
    return { val, input };
  },
};

沙盒

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-09-18 08:58:56

您可以使用观察者删除输入的数字:

代码语言:javascript
复制
const { ref, watch } = Vue
const app = Vue.createApp({
  setup() {
    let val = ref("");
    watch(val,
      (newValue, oldValue) => {
        val.value = newValue.replace(/\d+/g, "")
      },
    );
    return { val };
  },
})
app.mount('#demo')
代码语言:javascript
复制
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
<div id="demo">
<div>
    <input
      type="text"
      placeholder="Full Name"
      autocomplete="off"
      v-model="val"
    />
  </div>
  {{ val }}
</div>

票数 2
EN

Stack Overflow用户

发布于 2022-09-18 08:05:18

如果您想让用户只输入数字,您也可以使用<input type="number">在HTML中进行本机输入。

票数 0
EN

Stack Overflow用户

发布于 2022-09-18 10:06:34

在代码中,当模式匹配时,您将替换内容。根据您的问题,当模式不匹配时,您希望使其为空。

代码语言:javascript
复制
setup() {
    let val = ref("");
    const input = ({ target }) => {
      if (target && !target.value) val.value = "";
      if (!/[^\d]/g.test(target.value)) {
        val.value = "";
      }
      val.value = target.value;
      // val.value = target.value.replace(/[^\d]/g, "");
    };
    return { val, input };
  },

如果您也希望在更多的输入字段中实现,那么更好的方法是发出指令。

代码语言:javascript
复制
const app = createApp({})


app.directive('text-format', {
    mounted(el, binding) {
    el._listner = el.addEventListener("input", (e) => {
      if (!binding.value.test(el.value)) {
        el.value = "";
      }
    });
  },
  unmounted(el) {
    el.removeEventListener("input", el._listner);
  },
})

现在您的输入字段

代码语言:javascript
复制
 <input
      v-text-format="/[^\d]/g"
      type="text"
      placeholder="Full Name"
      autocomplete="off"
      v-model="val"
    />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73760974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档