HTML 5
Você pode usar o número do tipo de entrada HTML5 para restringir apenas as entradas numéricas:
<input type="number" name="someid" />
Isso funcionará apenas no navegador de reclamações HTML5. Verifique se o doctype do seu documento html é:
<!DOCTYPE html>
Consulte também https://github.com/jonstipe/number-polyfill para obter suporte transparente em navegadores mais antigos.
Javascript
Atualização: Existe uma solução nova e muito simples para isso:
Ele permite que você use qualquer tipo de filtro de entrada em um texto <input>
, incluindo vários filtros numéricos. Isso manipulará corretamente Copiar + Colar, Arrastar e Soltar, atalhos de teclado, operações do menu de contexto, teclas não digitáveis e todos os layouts de teclado.
Veja esta resposta ou tente você mesmo no JSFiddle .
Para fins gerais, você pode ter a validação JS como abaixo:
function isNumberKey(evt){
var charCode = (evt.which) ? evt.which : evt.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
<input name="someid" type="number" onkeypress="return isNumberKey(event)"/>
Se você deseja permitir decimais, substitua a "condição se" por esta:
if (charCode > 31 && (charCode != 46 &&(charCode < 48 || charCode > 57)))
Fonte: a entrada de texto HTML permite apenas entrada numérica
Demonstração do JSFiddle: http://jsfiddle.net/viralpatel/nSjy7/