如何在JQuery掩码中固定字符“ A”?

时间:2019-06-21 13:09:58

标签: javascript jquery asp.net-mvc jquery-mask

我一直在ASP.NET MVC中构建一个邮政编码组件,该组件将被全球化。这意味着根据供应商所在的国家/地区,文本框将设置正确的邮政编码遮罩。 问题在于某些国家/地区的掩码中固定了“ A”字符。例如:安道尔的邮政编码是“ AD000”(我的掩码),其中AD是固定的,后跟3位数字。 我的组件是动态的,因此我按国家/地区将蒙版保存在数据库中,并且呈现了视图,我的组件可以设置它。 但是字符“ A”是JQuery掩码中的保留字符,表示A-Z字母或数字。 因此,当国家/地区为安道尔时,我的黑手党不会强迫用户输入A,因此用户可以放任何东西,而我不希望这种行为。 我该怎么办?

我在某处看到,如果我使用'\',它将把下一个字符理解为文字。但这没用

$('input.my-class').mask('AD000')

我想要的是,当用户开始数字输入时,组件会自动呈现AD,然后等待用户输入数字

1 个答案:

答案 0 :(得分:2)

您可以自定义 translation 选项。默认值为:

translation: {
  '0': {pattern: /\d/},
  '9': {pattern: /\d/, optional: true},
  '#': {pattern: /\d/, recursive: true},
  'A': {pattern: /[a-zA-Z0-9]/},
  'S': {pattern: /[a-zA-Z]/}
};

您需要将'A'更改为:

{
    translation: {
        'A': {
            pattern: /A/,
            fallback: 'A',
            optional: false
        }
    }
 }

后备的停留时间:

  

当用户为当前位置键入无效的字符时,插件将用后备替换它,而不是擦除它们。

$('input.my-class').mask('AD000', {
    translation: {
        'A': {
            pattern: /A/,
            fallback: 'A',
            optional: false
        }
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/igorescobar/jQuery-Mask-Plugin@master/dist/jquery.mask.min.js"></script>


<form>
    <input type="text" name="field-name" class="my-class" />
</form>