一种可能的解决方案可能是使用 the jQuery Mask Plugin's doc 中由 On-the-fly mask change 调用的内容,如下所示:
HTML:
<input type="text" class="US" maxlength="20" autocomplete="off"/>
jQuery:
$(document).ready(function(){
var options = {onKeyPress: function(us){
var masks = ['CAAAA-AAA-AAA-AAA-AAA-AAA', 'US000-000-000-000-000-000'];
if(us.length){
mask = (us[0].match(/\d/)) ? masks[1] : masks[0];
$('.US').mask(mask, this);
}
$('.US').mask('AAAAA-AAA-AAA-AAA-AAA-AAA', this);
}};
$('.US').mask('AAAAA-AAA-AAA-AAA-AAA-AAA', options);
});
说明:
您输入的问题是它使用了字符 S。尽管 S 在插件中已经具有不同的含义。根据默认掩码图例:
S: Only A-Z and a-z characters.
所以你有两个选择来解决这个问题:使用翻译模式,或者覆盖“jquery.mask.js”中的默认选项:
var custom_options = {
byPassKeys: [8, 9, 37, 38, 39, 40],
translation: {
'0': {pattern: /\d/},
'9': {pattern: /\d/, optional: true},
'#': {pattern: /\d/, recursive: true},
'A': {pattern: /[a-zA-Z0-9]/},
'S': {pattern: /[a-zA-Z]/}
};
};
我选择第二个!我将“S”更改为“C”。可能是另一个角色。
查看此链接jsfiddle 以查看工作示例。
希望有用!