Jquery 如何正确屏蔽数据库中已填充的输入?
在巴西,一些电话号码有9位数字,但默认为8位,因此一些开发人员使用jQuery Maskedinput插件为此编写了一些解决方案。我有这个功能:Jquery 如何正确屏蔽数据库中已填充的输入?,jquery,input,mask,maskedinput,Jquery,Input,Mask,Maskedinput,在巴西,一些电话号码有9位数字,但默认为8位,因此一些开发人员使用jQuery Maskedinput插件为此编写了一些解决方案。我有这个功能: $("#telephone").mask("(99) 9999-9999?9"); $("#telephone").blur(function(event) { if($(this).val().length == 15){ $('#telephone').mask('(99) 99999-999?9'); } else {
$("#telephone").mask("(99) 9999-9999?9");
$("#telephone").blur(function(event) {
if($(this).val().length == 15){
$('#telephone').mask('(99) 99999-999?9');
} else {
$('#telephone').mask('(99) 9999-9999?9');
}
});
功能:如果电话号码有8位数字,它会忽略9位数字,并将该值保留为默认格式,即(11)0000-0000。如果电话号码有9位数字,他从第二个组中取出第一位数字,并将其放在第一个组的末尾,例如:(11)9123-45678变为(11)91234-5678,因此这里的数字4从最后一个组中删除并插入到第一个组的末尾,因此第一个组有5位数字
问题是,当一个输入已经从db填充时,掩码不被应用,它只在“模糊”上起作用。有没有什么疯狂的方法来检查输入值是否有9位数字,然后在处理模糊时应用遮罩
此外,为了能够重用该代码,我需要将其转换为一个函数,该函数将元素ID作为参数传递(理想情况下可以是1个或更多ID)。因此,我创建了下面的函数,但我不确定是否正确调用了它:
function mask_phone(inputID) {
$k(inputID).mask("(99) 9999-9999?9");
$k(inputID).blur(function(event) {
if($k(this).val().length == 15) {
$k(inputID).mask('(99) 99999-999?9');
} else {
$k(inputID).mask('(99) 9999-9999?9');
}
});
}
叫它
mask_phone('#telephone, #fax');
谢谢你的帮助 这类问题非常具体,不太可能得到答案,不过我有一些空闲时间,试了一下。您可以查看演示。这不是一个很好的方法,但这是我对特定库所能做的最好的方法
var mask = function(ids) {
var el = $(ids);
$.each(el, function(i, elem) {
//Get element
var input = $(elem);
//Store the original value (only numbers)
var value = input.val().replace(/[^0-9\.]/g, '');
//Choose mask according to length
var mask = "(99) 9999-9999";
if (value.length>10) {
mask = "(99) 99999-9999"
}
//Trigger the mask
input.mask(mask);
//Emulate the keypresses from original value
for (var i = 0; i < value.length; i++) {
input.trigger({
type: 'keypress',
keyCode: value.charCodeAt(i)
});
}
//Done
});
}
var mask=函数(ids){
var el=$(id);
$。每个(el,功能(i,elem){
//获取元素
变量输入=$(elem);
//存储原始值(仅数字)
var value=input.val().replace(/[^0-9\.]/g');
//根据长度选择遮罩
变量掩码=“(99)9999-9999”;
如果(长度值>10){
掩码=“(99)99999-9999”
}
//触发面具
输入掩码(mask);
//从原始值模拟按键
对于(变量i=0;i
虽然这可能无法立即解决您的问题,但我相信这将使您走上正确的道路,找出在您的特定情况下最有效的方法。谢谢,我会看一看!顺便说一句,是的,我已经经历了很多“不太可能回答”的问题,告诉我吧…:(-巴西对开发人员甚至前端人员来说都是一个痛苦的地方。看起来不错……也许有什么我不明白的。请启发我,因为这对加载值非常有用……比如在
模糊。所以我不明白为什么要使用更复杂的脚本。(我也正要回答。。。