我使用jQuery Mask Plugin(http://igorescobar.github.io/jQuery-Mask-Plugin/)来屏蔽带有代码区域的手机的输入。
$('.cellphone').mask('00 000000000');
这接受如下输入:
21 972389472
99 232441244
69 522235352
42 022222222
但是现在我必须匹配细节代码区域。例如,仅允许代码区域21和99。因此,相同的输入仅接受:
21 972389472
99 232441244
我试图创建一个掩码功能,但没有取得多大成功。该插件提供此功能,如:
var celphoneMask = function(phone, e, currentField, options){
return phone.match(/^(\(?11\)? ?9(5[0-9]|6[0-9]|7[01234569]|8[0-9]|9[0-9])[0-9]{1})/g) ?
'(00) 00000-0000' : '(00) 0000-0000';
};
$(".sp_celphones").mask(celphoneMask);
知道我该怎么办? :■
答案 0 :(得分:0)
以下正则表达式将接受21 .....和99 .....数字。
/^(?:21|99) [0-9]{8}$/
答案 1 :(得分:0)
没有明显的选项可以阻止使用此插件显示多位数模式,因为Regex
测试是每个字符""。您仍然只能接受有效的区号,但您必须在插件外工作。
您可以使用translation
选项自定义数字模式,从而消除大量无效区号:
"translation": {
"y": {
"pattern": /[29]/,
"optional": false
},
"z": {
"pattern": /[19]/,
"optional": false
}
}
然后制作你的面具:
'yz 000000000'
这只接受区号21
,29
,91
和99
。要阻止29
和91
,您需要捕获keypress
事件并测试这两种组合。我希望能够说您可以使用onKeyPress
插件选项,但该插件实际上会触发onKeyPress
选项onKeyUp
,而不是onKeyPress
。好消息是您可以将自己的onKeyPress
处理程序链接到mask
插件:
$(selector).mask().on('keypress', function (e) {
var validAreaCodes = /^(?:21|99)/, // define area codes
value = this.value + String.fromCharCode(e.which), // append keypressed to existing value
matched = validAreaCodes.test(value), // test new value
failed = value.length > 1 && !matched; // fail if not a match
if (failed) {
e.preventDefault(); // prevent keypress if failed
};
return !failed;
});