2012-02-09 15 views
11

C'è un modo per definire uno <input> che mostri un input da tastiera che consente solo numeri e il punto decimale (o virgola per gli utenti internazionali)?Mostrare un input che consente solo numeri e il punto decimale?

<input type='tel'> mostra merda telefono non ho bisogno, e nessun punto decimale
<input type='number' pattern='[0-9]*'> mostra tutti i numeri, ma senza decimali

Che cosa posso fare per ottenere l'ingresso ho bisogno?

+0

-1? All'inizio suppongo che abbia frainteso la tua domanda. Quello che ho dato è corretto HTML5 che causa la corretta convalida dei dati nei browser pienamente compatibili. La [Libreria degli sviluppatori Apple] (https://developer.apple.com/library/safari/#codinghowtos/Mobile/UserExperience/_index.html) l'elenco 15 fornisce gli schemi che effettivamente causeranno la visualizzazione di diverse tastiere iphone. Immagino che la lista sia esaustiva, e buongiorno signore. – chucksmash

+0

@IamChuckB: le risposte errate vengono svalutate. Non è personale Stranamente, avrei accettato il tuo commento come corretto con un upvote! –

+0

Abbastanza giusto. Nessun danno, nessun fallo spero. – chucksmash

risposta

4

Si può provare questo attributo per il vostro tipo = campo "Numero":

pattern="\d+(\.\d*)?" 

questo permetterà solo cifre con/senza un punto decimale e il numero galleggianti sulla destra.

+2

NOTA 1: questo porterà sempre la tastiera completa ma nel riquadro numero/simbolo come predefinito. L'utente può comunque passare a caratteri alfanumerici ** MA, su evento onblur, il modello inizia e rimuove qualsiasi alfanumerico caratteri (ma non numeri). ** NOTA 2: Deve essere sia type = "number" che pattern = "\ d + (\. \ d *)?" per funzionare. Inoltre, il browser deve supporto html5: funziona nei normali browser e Safari in IOS –

+0

Le ultime versioni di Chrome sembrano sbagliate se si combina type = "number" con questo (e qualsiasi) modello. Chrome applica in modo affidabile i pattern all'input type = "text" – egid

+0

Ho provato quanto sopra ma non funziona, e trovo confuso per l'utente che mostra la tastiera completa quando sono consentiti solo numeri e un punto. Ho finito per usare 2 input type = "number" separati da una static "." – Mirko

1

Vedere il mio progetto del filtro cross-browser del valore dell'elemento di immissione del testo sulla pagina Web utilizzando il linguaggio JavaScript: Input Key Filter. È possibile filtrare il valore come un numero intero, un numero a virgola mobile o scrivere un filtro personalizzato, ad esempio un filtro del numero di telefono. Vedere un esempio di codice di inserire un numero float

<!doctype html> 
 
<html xmlns="http://www.w3.org/1999/xhtml" > 
 
<head> 
 
    <title>Input Key Filter Test</title> 
 
\t <meta name="author" content="Andrej Hristoliubov [email protected]"> 
 
\t <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
 
\t 
 
\t <!-- For compatibility of IE browser with audio element in the beep() function. 
 
\t https://www.modern.ie/en-us/performance/how-to-use-x-ua-compatible --> 
 
\t <meta http-equiv="X-UA-Compatible" content="IE=9"/> 
 
\t 
 
\t <link rel="stylesheet" href="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.css" type="text/css"> \t \t 
 
\t <script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/Common.js"></script> 
 
\t <script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.js"></script> 
 
\t 
 
</head> 
 
<body> 
 
\t <h1>Float field</h1> 
 
Float field: 
 
<input id="Float" 
 
\t onchange="javascript: onChangeFloat(this)" 
 
\t onblur="inputKeyFilter.isNaN(parseFloat(this.value), this);" 
 
/> 
 
<script> 
 
\t CreateFloatFilter("Float"); 
 
\t 
 
\t function onChangeFloat(input){ 
 
\t \t inputKeyFilter.RemoveMyTooltip(); 
 
\t \t var elementNewFloat = document.getElementById("NewFloat"); 
 
\t \t var float = inputKeyFilter.parseFloat(input.value); 
 
\t \t if(inputKeyFilter.isNaN(float, input)){ 
 
\t \t \t elementNewFloat.innerHTML = ""; 
 
\t \t \t return; 
 
\t \t } 
 
\t \t elementNewFloat.innerHTML = float + " or localized value: " + float.toLocaleString(); 
 
\t } 
 
</script> 
 
New float: <span id="NewFloat"></span> 
 
</body> 
 
</html>

anche vedere la mia pagina "Float field:" of the example of the input key filter

+0

Assicurati di includere l'auto-attribuzione ogni volta che ti colleghi a uno dei tuoi progetti altrove sul Web, altrimenti è considerato spam –

+0

Mi spiace, non capisco cos'è l'" auto-attribuzione ". Cosa devo fare? – Andrej

+0

Metti una nota di qualche tipo vicino ai tuoi collegamenti per chiarire che li hai scritti o altro –

0

=> Si consente solo punto decimale singolo (.)

=> Consentirà solo valori decimali a tre cifre dopo il punto. è possibile modificare passando a {1,3} in sotto RegEx.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

     if (!string.length) 
      return YES; 

     NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 
     NSString *expression = @"^([0-9]+)?(\\.([0-9]{1,3})?)?$"; 
     NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression 
                       options:NSRegularExpressionCaseInsensitive 
                       error:nil]; 
     NSUInteger numberOfMatches = [regex numberOfMatchesInString:newString 
                  options:0 
                   range:NSMakeRange(0, [newString length])]; 
     if (numberOfMatches == 0) 
      return NO; 


     return YES; 

    } 
Problemi correlati