2012-03-03 13 views
5

Come si specifica un carattere facoltativo in una maschera di immissione?Carattere facoltativo nella maschera di immissione

Ho trovato questo plug-in di input mascherato http://digitalbush.com/projects/masked-input-plugin/ e queste definizioni di maschera.

$.mask.definitions['g']="[ ]"; 
$.mask.definitions['h']="[aApP]"; 
$.mask.definitions['i']="[mM]"; 
$.mask.definitions['2']="[0-1]"; 
$.mask.definitions['6']="[0-5]"; 
new_mask = "29:69"; 
$("#txtTime").mask(new_mask); 

Definisce una maschera di input per un formato di 12 ore, ad es. 11:00. Vorrei consentire all'utente di specificare solo una cifra per "ora". Invece di dover digitare 01:00, l'utente dovrebbe essere in grado di digitare 1:00. Come lo faccio?

risposta

3

È necessario utilizzare ? per i caratteri facoltativi, quindi nel tuo caso è necessario utilizzare "2?9:69".

+1

Ma questo ancora non consente all'utente di specificare solo un carattere per l'ora. Quando faccio clic fuori dal campo di input, la maschera inserisce i minuti per la cifra dell'ora mancante. – user823527

+2

Buona cattura, questo sembra un bug nel plugin. Sfortunatamente, non conosco una buona soluzione a meno che tu non modifichi il plugin stesso. –

3

citazione e l'esempio da the page si è collegato alla tua domanda:

Puoi avere parte della vostra maschera facoltativa. Qualche cosa elencata dopo "?" all'interno della maschera è considerato input utente facoltativo. L'esempio comune per questo è il numero di telefono + estensione opzionale.

jQuery(function($){ 
    $("#phone").mask("(999) 999-9999? x99999"); 
}); 
0

È possibile utilizzare $.mask.definitions['g']="[0-9 ]";

0

Ho un problema simile che sto cercando di risolvere per gli importi in valuta variabili ($ 0,00 - $ 10000.00), e io non capisco come il plugin funziona.

Da un lato, il bit $.mask.definitions['symbol'] = '???' sembra che sia impiegando un frammento regex, sulla base degli esempi in riferimento API, e un po confermata da questa parte alla sorgente, al codice della funzione mask:

$.each(mask.split(""), function (i, c) { 
    if (c == '?') { 
     len--; 
     partialPosition = i; 
    } else if (defs[c]) { 
     tests.push(new RegExp(defs[c])); 
     if (firstNonMaskPos == null) 
      firstNonMaskPos = tests.length - 1; 
    } else { 
     tests.push(null); 
    } 
}); 

... D'altra parte, una definizione di maschera di []|[0-9] non funziona (sto tentando di eseguire una stringa vuota o 0-9, per quelli non alfabetizzati nella regex.) Per riferimento, sto tentando di creare una maschera per soddisfare la condizione 0.00-10000.00 come oooo9.99, dove o è []|[0-9].

Poiché il codice conferma che questo è basato su regex, il modello nullo o di intervallo dovrebbe funzionare ma non lo è; questo è un bug più oscuro nel framework della maschera. A meno che non sia I il tentativo di fare qualcosa in modo errato, che è anche possibile ...

Problemi correlati