2017-03-28 5 views
1

브라질에서는 일부 전화 번호가 9 자리이지만 기본값은 8입니다. 일부 개발자는 jQuery Maskedinput 플러그인을 사용하여 일부 솔루션을 작성했습니다. 나는이 기능을 가지고 :이미 DB에서 채워진 입력을 올바르게 마스크하는 방법은 무엇입니까?

$("#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 자리 인 경우 두 번째 블록에서 첫 번째 숫자를 가져 와서 첫 번째 블록의 끝에 둡니다. 예 : this (11) 9123-45678은 (11) 91234-5678이되므로 여기서 4 번은 제거되었습니다. 마지막 그룹부터 삽입하여 1 그룹 끝 부분에 삽입하면 첫 번째 그룹은 5 자리 숫자가됩니다.

문제는 입력이 이미 db에서 채워지면 마스크가 적용되지 않고 "흐림"에서만 작동한다는 것입니다. 입력 값에 9 자리가 있는지 확인한 다음 마스크가 흐리게 처리되도록 적용하는 방법이 있습니까?

또한 코드를 다시 사용할 가능성이 있으므로 매개 변수로 요소 ID를 전달하는 함수로 변환해야합니다 (이상적인 ID는 1 ID 이상일 수 있음). 도와 ...

mask_phone('#telephone, #fax'); 

감사를

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'); 
     } 
    }); 
} 

가 호출 : 그래서, 아래의 기능을 만들었습니다,하지만 난 제대로 호출하고 있는지 확실하지 않습니다!

답변

1

이런 종류의 질문은 매우 구체적이어서 답을 얻지 못할 것입니다.하지만 여가 시간을 가졌습니다. 데모 here을 확인할 수 있습니다. 아주 좋은 접근 방식은 아니지만 특정 라이브러리로 할 수있는 최선의 방법입니다.

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 
    }); 
} 

이 문제를 즉시 해결할 수 있지만

, 나는 그것이 당신의 특별한 경우에 가장 적합한 파악에 바른 길에 당신을 둘 것이라 확신합니다.

+0

고마워, 내가 살펴볼거야! BTW, 예, 나는 "가능성이 희박한"질문을 많이 겪었습니다. 그것에 대해 말해주십시오. : - 브라질은 개발자 나 심지어 프런트 엔드 친구들에게 고통입니다. – joaogdesigner

+0

어쩌면 저기에 있을지도 모릅니다. 내가 얻을 수없는 것.이 [CodePen] (http://codepen.io/Bes7weB/pen/QpVVZE)이 onload 값에 아주 효과적이기 때문에 나를 밝혀주십시오 ... 'blur'처럼. 그래서 나는 그렇지 않습니다. 더 복잡한 스크립트를 사용해야하는 이유를 얻으십시오. (나는 너무 anwer에 대해서도 ... –