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