2011-09-03 10 views
57

Possible Duplicate:
How to allow only numeric (0-9) in HTML inputbox using jQuery?Consenti solo i numeri da digitare in una casella di testo

Come per consentire solo i numeri a essere scritti in questo campo testo?

<input type="text" class="textfield" value="" id="extra7" name="extra7"> 
+4

Che classe hai come numero? Questi numeri sono '12.3',' -4', 'V',' six'? –

+8

Non sono sicuro se una domanda jquery sarebbe un duplicato. Javascript! = JQuery – Evert

+4

** Questo non è un duplicato esatto ** della domanda di riferimento. Si rivolge a una risposta javascript mentre l'altra mira a una risposta jQuery. Pubblico diverso, soluzioni diverse. –

risposta

180

Si potrebbe sottoscrivere l'evento onkeypress:

<input type="text" class="textfield" value="" id="extra7" name="extra7" onkeypress="return isNumber(event)" /> 

e quindi definire la funzione isNumber:

function isNumber(evt) { 
    evt = (evt) ? evt : window.event; 
    var charCode = (evt.which) ? evt.which : evt.keyCode; 
    if (charCode > 31 && (charCode < 48 || charCode > 57)) { 
     return false; 
    } 
    return true; 
} 

si può vedere in action here.

+3

Non sono sicuro di come interpretare la clausola 'if'. Se è più grande di 57, è sempre più grande di 31. Penso che tu possa eliminare le parentesi. – pimvdb

+0

Grazie sta funzionando. Qual è l'intervallo di codici di caratteri per sole lettere? Voglio dire, voglio farlo per accettare le lettere solo in una funzione diversa, ovviamente – EnexoOnoma

+0

@Giorkouros, ecco la tabella ASCII: http://www.asciitable.com/ A seconda di cosa intendi per lettere, il risultato sarà diverso. Ad esempio, se si desidera A-Z, l'intervallo è [65, 90] e a-z è [97, 122]. –

28

Con HTML5 si può fare

<input type="number"> 

È anche possibile utilizzare un modello di espressione regolare per limitare il testo di input.

<input type="text" pattern="^[0-9]*$" /> 
+3

Ciò non impedisce l'immissione di caratteri non numerici. – MyNameIsKo

+0

@MyNameIsKo dovrebbe, forse stai usando un client che non supporta questo tipo di funzionalità HTML5? – powtac

+0

non funziona in Chrome o Firefox. Potresti riferirti alla convalida dell'invio di caratteri non numerici, che funziona correttamente con HTML5. La domanda originale, tuttavia, era interessata a impedire completamente l'inserimento non numerico. Sono abbastanza sicuro che JavaScript sia ancora l'unico modo per farlo. – MyNameIsKo

13

È inoltre possibile utilizzare alcuni attributi HTML5, alcuni browser potrebbero già approfittarne (type="number" min="0").

Qualunque cosa tu faccia, ricorda di ricontrollare gli input sul lato server: non puoi mai presumere che la validazione lato client sia stata eseguita.

Problemi correlati