首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用模11掩码验证文本输入掩码(智利规则)

使用模11掩码验证文本输入掩码(智利规则)
EN

Stack Overflow用户
提问于 2019-06-05 01:15:27
回答 1查看 655关注 0票数 2

有没有办法使用vuetify input " mask“属性进行更高级的掩码使用(动态掩码)?

目前,它们支持非常简单的预定义掩码,如信用卡或电话号码。但是智利的Rut (或任何Modulo 11验证)掩码是基于用户输入的动态的

检查Here模数11的工作原理。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-05 01:15:27

在尝试使用掩码之后,我发现您可以传递它的计算值,因此每当输入值发生变化时,掩码也可能发生变化。

代码语言:javascript
复制
new Vue({
  el: '#app',
  data: () => ({
    value: '20290324K'
  }),
  computed: {
    mask() {
      const $this = this
      const chars = this.value.split('');
      const charsWithoutValidator = this.value.substr(0, this.value.length - 1).split('')
      let currentValidator = 11 - charsWithoutValidator.reverse().reduce((sum,el,i) => sum += el * (i % 6 + 2), 0) % 11;
      currentValidator = currentValidator == 10 ? 'N' : '#';
      let nextValidator = 11 - chars.reverse().reduce((sum,el,i) => sum += el * (i % 6 + 2), 0) % 11;
      nextValidator = nextValidator == 10 ? 'N' : '#';
      const mask = charsWithoutValidator.reverse().map((char, i) => {
        if (i % 3 === 0 && i !== 0) {
          return '#.'
        }
        return '#'
      }).reverse().join('');
      return `${mask}-${currentValidator}${nextValidator}`; // ad an extra char at the end to be able to type.
    }
  }
})
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vuetify@1.5.14/dist/vuetify.min.css" />
<script src="https://cdn.jsdelivr.net/npm/vuetify@1.5.14/dist/vuetify.min.js"></script>
<div id="app">
  <v-app id="inspire">
    <v-card>
      <v-card-text>
      </v-card-text>
      <v-card-text>
        <v-text-field v-model="value" :mask="mask" label="Value" validate-on-blur
></v-text-field>
      </v-card-text>
    </v-card>
  </v-app>
</div>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56448550

复制
相关文章

相似问题

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