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ď č. 1Dalo 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“