Jquery 如何正确屏蔽数据库中已填充的输入?

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 {

在巴西,一些电话号码有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');
    }
});
功能:如果电话号码有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

虽然这可能无法立即解决您的问题,但我相信这将使您走上正确的道路,找出在您的特定情况下最有效的方法。

谢谢,我会看一看!顺便说一句,是的,我已经经历了很多“不太可能回答”的问题,告诉我吧…:(-巴西对开发人员甚至前端人员来说都是一个痛苦的地方。看起来不错……也许有什么我不明白的。请启发我,因为这对加载值非常有用……比如在
模糊
。所以我不明白为什么要使用更复杂的脚本。(我也正要回答。。。