/ / Maska JavaScript pre telefónne číslo Brasil - javascript, jquery, validácia, maskedinput

JavaScript maska ​​pre telefónne číslo Brazílie - javascript, jquery, validácia, maskedinput

Momentálne používam jquery.maskedinput pre verné formáty masky, ale nefunguje to pre telefónne čísla.

V Brazílii sme mali všetky číslaformát (99) 9999-9999. V poslednom čase však v niektorých mestách používajú mobilné telefóny (99) 99999-9999, zatiaľ čo ich bežné telefóny a zvyšok krajiny zostávajú (99) 9999-9999.

jQuery.Zdá sa, že maskedinput nepodporuje dva formáty na rovnakom vstupe, kde môže alebo nemusí byť prítomný znak v strede reťazca. Ako vidím vo svojej dokumentácii, mohol by som mať (99) 9999-9999 a (99) 9999-99999, ale to by používateľov mialo.

Existuje nejaký iný doplnok / framework pre masku, ktorý mi umožňuje overiť (99) 9999-9999 aj (99) 99999-9999?

Edit: Vytvoril som úplný test pomocou riešení Harryho a Dmitriiho: http://jsfiddle.net/NSd6g/ $("#full").inputmask("(99)9999[9]-9999");

Budem čakať trochu viac, aby som zistil, či nájdemešte lepšie riešenie. Perfektný by nevyžadoval červenú správu, druhá skupina by mala predvolene 4 číslice. A ak by tretia skupina získala piatu číslicu, len potom druhá skupina by získala piaty číslica, presunula prvú číslicu tretej skupiny na druhú skupina je piata. lol trochu ťažké pochopiť, prepáč!

odpovede:

5 pre odpoveď č. 1

Dalo by sa to dosiahnuť pomocou jquery.inputmask tak jednoduché ako:

jQuery(function($) {
$("#test").inputmask("(99)9999[9]-9999");
});

Skúste toto demonštrácie.

Na preskočenie voliteľnej časti pri písaní do vstupu musíte napísať medzeru alebo znak za voliteľnou časťou v maske (v tomto prípade spojovník).


1 pre odpoveď č. 2

S maskou jQuery môžete mať iba koncové znaky voliteľné. Nie tí, ktorí sú uprostred vstupu.

Navrhujem mať 3 vstupné políčka, jedno pre každú časť čísla a voliteľný znak na konci stredného vstupu. Potom zreťazte vstupy pri odoslaní.

ako:

 (<input id="phone2" />)<input id="phone3" />-<input id="phone4" />

jQuery(function($){
$("#phone2").mask("99");
$("#phone3").mask("9999?9");
$("#phone4").mask("9999");
});

Pozrite sa na husle: http://jsfiddle.net/Rge83/1/

Aby bol užívateľsky prívetivejší, je možné pridať skript, ktorý sa presunie na ďalší vstup po naplnení aktuálneho, + nejaký css, aby vstupy vyzerali viac ako jeden.


1 pre odpoveď č. 3

Aj ja som brazílsky.

Pri mojej práci v skutočnosti nepoužívame znak „-“ uprostred pre tieto typy masiek, takže nejde o zmätok ... konečná maska ​​bude nasledovať: (99)99999999?9

Je pre koncového používateľa o niečo ťažšie identifikovať nesprávne zadané telefónne číslo, ale funguje to.

Ďalším spôsobom, ako poznám, je vytvorenie regulárneho výrazu v JS a jeho následné použitie s iným doplnkom, ako napríklad jQuery Validate.


0 pre odpoveď č. 4
//Configuração para celular com nono digito
$("#Seletor").focusout(function () {
var phone, element;
element = $(this);
element.unmask();
phone = element.val().replace(/D/g, "");
if (phone.length > 10) {
element.mask("(99) 99999-999?9");
} else {
element.mask("(99) 9999-9999?9");
}
}).trigger("focusout");

0 pre odpoveď č. 5

Môj návrh: „(99) [9] 9999-9999“