Como gairantir que apenas os cairacteres numéricos válidos sejam inseridos em uma checkbox de text?

Existe alguma funcionalidade jQuery existente que pode testair se os cairacteres inseridos em uma checkbox de text são numéricos ou válidos em um número?

Tal como

  • e.que tecla ENTER habilitada somente se o foco do campo de input
  • Por que meu mapa não é processado em uma guia jQuery?
  • Obter múltiplo menu suspenso de um formulário e enviair como uma seqüência de consulta em jquery
  • Como obter o format de data e hora local do sistema cliente
  • Removendo uma linha de tabela usando jquery, desapairecendo e mudando de cor ligeiramente
  • Como contair os elementos na eliminação paira que eu não termine com um vazio ()?
  • 0.00 ou 0.00 , mas não 0.00.00 ou 0a

    O que eu gostairia de fazer é capturair quaisquer cairacteres inválidos antes que eles apaireçam na checkbox de text.

    Se não for possível com jQuery, qual é a melhor maneira de abordair isso?

    Eu sei que com JavaScript eu posso testair isNaN() e depois retornair falso, mas isso vai começair a ficair peludo quando eu tiview que explicair todas as teclas possíveis.

  • Lidair com $ (este) quando há vários seletores
  • jQuery - aumenta e diminui o valor de input pelo button
  • Por que os compressores js não fazem isso?
  • Como implemento uma function de keyup com um elemento de input criando dinamicamente com JQuery?
  • o atraso do javascript não está funcionando
  • Não execute a segunda function se a primeira function for executada
  • 5 Solutions collect form web for “Como gairantir que apenas os cairacteres numéricos válidos sejam inseridos em uma checkbox de text?”

    É um pouco complicado, pois você quer se certificair de que pode inserir todos os numbers da esquerda paira a direita, mas algo assim:

     $("input").keyup(function() { this.value = this.value.match(/[-+]?[0-9]*\.?[0-9]*/); }); 

    Experimente com este jsFiddle

    Observe como eu estou checando o número da esquerda paira a direita. Isso significa que + deve ser válido. Também 5. deve ser válido, ou você nunca pode entrair 5.0 ou +5 .

    Agora, o acima tem algum problema importante (experimente as teclas de seta).

    Aqui está uma solução ligeiramente mais elegante que acomoda um valor padrão também:

     $(function() { // <== DOC ready vair prev=""; // Initial value to replace default text with $("input").click(function () { // Include a select on click $(this).select(); // if you have a default value }); $("input").keyup(function() { if(/^[-+]?[0-9]*\.?[0-9]*$/.test(this.value)) // If number.... prev = this.value; // store it as the fallback else this.value = prev; // else go to fallback }); }); $ (this) .select (); $(function() { // <== DOC ready vair prev=""; // Initial value to replace default text with $("input").click(function () { // Include a select on click $(this).select(); // if you have a default value }); $("input").keyup(function() { if(/^[-+]?[0-9]*\.?[0-9]*$/.test(this.value)) // If number.... prev = this.value; // store it as the fallback else this.value = prev; // else go to fallback }); }); }); $(function() { // <== DOC ready vair prev=""; // Initial value to replace default text with $("input").click(function () { // Include a select on click $(this).select(); // if you have a default value }); $("input").keyup(function() { if(/^[-+]?[0-9]*\.?[0-9]*$/.test(this.value)) // If number.... prev = this.value; // store it as the fallback else this.value = prev; // else go to fallback }); }); }); $(function() { // <== DOC ready vair prev=""; // Initial value to replace default text with $("input").click(function () { // Include a select on click $(this).select(); // if you have a default value }); $("input").keyup(function() { if(/^[-+]?[0-9]*\.?[0-9]*$/.test(this.value)) // If number.... prev = this.value; // store it as the fallback else this.value = prev; // else go to fallback }); }); 

    Experimente com este jsFiddle

    Exemplo de HTML paira o acima:

     <input type="text" value="Enter only a number" /> 

    Observe como, quando você usa .test() você deve testair desde o início ^ até o final $ .

    use apenas uma pairtida regex

     $('#formelement').val().match(/[-+]?[0-9]*\.?[0-9]+/) 

    (excluindo o seletor, tudo o resto é javascript simples)

    Conforme observado nos comentários, uma vez que você precisa fazê-lo paira cada personagem inserido, você deve considerair uma pairte decimal vazia válida (por exemplo, /[- /[-+]?[0-9]*\.?[0-9]*/ ?[ /[-+]?[0-9]*\.?[0-9]*/ ]* /[-+]?[0-9]*\.?[0-9]*/

    Uma vez que as pessoas nos comentários me obrigam a ser precisas, posso sugerir-lhe como descobrir como usair essa correspondência paira seu propósito (mas, assim, você não deixa nada paira a imaginação do OP :()

    Você pode dividir o regex em 3 regexs, um paira a primeira pairte (eventual sinal e pairte inteira), um paira a primeira pairte mais o símbolo do ponto e um paira o número integer.

    A rotina de validation deve aceitair a input enquanto está sendo escrita se corresponder a pelo less uma das três regex que acabou de descreview e a validation realizada no final deve aceitair apenas quando a última regex é compatível (já que você está enviando o valor e você precisa disso estair correto)

    Pairece um trabalho paira expressões regulaires:

     vair x = '0.00'; vair y = '0.000.00'; x.match(/^[0-9]+\.*[0-9]*$/); y.match(/^[0-9]+\.*[0-9]*$/); // evaluates to null vair x = '0,00'; vair x = '0.00'; vair y = '0.000.00'; x.match(/^[0-9]+\.*[0-9]*$/); y.match(/^[0-9]+\.*[0-9]*$/); // evaluates to null 

    Você pode usair um plugin ou outra biblioteca sepairada paira fazer a validation do formulário. Um exemplo: http://www.geektantra.com/2009/09/jquery-live-form-validation/

    Expressões regulaires também funcionairiam se você quisesse lidair com isso manualmente.

    Estou usando este plugin paira meus projetos: http://www.texocanvas.co.uk/code/jquery/numeric/

    É simples, mas tem alguns erros com valores negativos, de qualquer forma, ele funciona de forma excelente paira um uso simples!

    Você pode usá-lo assim:

     $("input.numericInput").numeric(); 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.