我有一个文本字段,当用户键入第一个字符时,我必须应用两个掩码中的一个。
规则是:
我生成的JavaScript是
(function () {
var oldVal;
$('#id').on('keypress paste textInput input', function () {
var val = this.value;
if ((val != oldVal) && (val.length == 1)) {
oldVal = val;
if(oldVal == '#'){
$('#id').mask('999999999');
$('#id').val(oldVal)
}else{
$('#id').mask('999.999.999-99');
$('#id').val(oldVal)
}
}else if(val.length == 0) {
$('#id').unmask();
}
});
}());
幸运的是,掩码已正确应用。问题是第一个字符丢失了。
示例:
我做错了什么?
谢谢!
答案 0 :(得分:2)
我不确定这是不是你要找的,但是......
插件尝试在每个按键上应用掩码。稍微更改掩码(和翻译,因为"#"被认为是数字占位符)让插件处理整个输入行并掩盖它。
if (oldVal == '#') {
$('#id').mask('#999999999', {"translation": {"#": null}});
$('#id').val(oldVal);
} else {
$('#id').mask('999.999.999-99');
$('#id').val(oldVal);
}
它适用于这个小提琴。 http://jsfiddle.net/FfR8j/2/
同样,不确定那是否是你要找的东西。
答案 1 :(得分:1)
我使用以下代码来掩盖澳大利亚联系电话号码字段。当用户输入前两位或四位数时,屏蔽规则将更新:
// contactNumberOptions
var contactNumberOptions = {onKeyPress: function(cep, e, field, options){
var masks = ['00 0000 0000', '0000 000 000', '0000 0000'];
var prefix2 = cep.substring(0, 2);
var prefix3 = cep.substring(0, 5);
var prefix4 = cep.substring(0, 4);
mask = masks[2];
if( prefix2 == '02' || prefix2 == '03' || prefix2 == '07' || prefix2 == '08'){
mask = masks[0];
} else if( prefix2 == '04'){
mask = masks[1];
} else if( prefix4 == '1800' || prefix4 == '1900' || prefix4 == '1902'){
mask = masks[1];
} else {
mask = masks[2];
}
jQuery('input[name=contact-number]').mask(mask, options);
}};
jQuery('input[name=contact-number]').mask('0000 0000', contactNumberOptions);