5

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

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

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

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

4

1 回答 1

3

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

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>

于 2019-06-21T13:50:28.693 回答