2017-01-11 5 views
-3

入力値を数値(-ve整数を含む)に制限し、小数点以下を2桁に制限したいと考えています。負の値と2桁だけの数値と小数点の使用

は受け入れ:

22.33; -123.45; 0.22 

は拒否:

-123.000123; --123.000123; -123-23.12; --23-1.00 

私はこの

<input id="restricted" type="text" class="form-control" placeholder="00.00" onkeypress="return isNumberKey(evt,this)"/> 


function isNumberKey(evt, element) { 
var charCode = (evt.which) ? evt.which : event.keyCode 
    if (charCode > 31 && (charCode < 48 || charCode > 57) && !(charCode == 46  || charcode == 8)) 
    return false; 
    else { 
    var len = $(element).val().length; 
    var index = $(element).val().indexOf('.'); 
    if (index > 0 && charCode == 46) { 
    return false; 
    } 
    if (index > 0) { 
    var CharAfterdot = (len + 1) - index; 
    if (CharAfterdot > 3) { 
    return false; 
    } 
} 

    } 
    return true; 
} 

を使用しています、私はそれを検証したいいけません。私は整数以外のものを受け入れず、 "。"の後に2桁に制限したい。

+0

あなたは、任意のWeb検索エンジンで簡単に答えを見つけることができなかった場合 –

+0

、私は私の質問に似ていたことが思わぬことになる http://stackoverflow.com/questions/2808184 /制限入力とテキストボックス入力のみ可能な数字と小数点 しかし、私は最初のコードニッペッブをローカルで実行しようとするとjsfiddleでも動作しません。 – fonr

+1

[JavaScriptの10進数を検証する - IsNumeric )](http://stackoverflow.com/questions/18082/validate- decimal-numbers-in-javascript-isnumeric) –

答えて

0

HTML5パターンを使用します。

​​

もしくは直javascriptの変種:

var input_field = document.getElementById('the_id'); 
 

 
input_field.addEventListener('keyup', function() { 
 
    var v = parseFloat(this.value); 
 
    if (isNaN(v)) { 
 
     this.value = ''; 
 
    } else { 
 
     this.value = v.toFixed(2); 
 
    } 
 
});
<input id="the_id" placeholder="00.00" value="1234">

+0

アルファベットの入力を制限する必要があります。 – fonr

+0

あなたのパターン '\ d'は、整数だけを受け入れるため、十分に制限されていません。それは '42.42'を受け入れません。また、あなたのJavaScriptでは数字のラウンドを作ります。私はそれがこれらの数字を丸めるのではなく、それを受け入れるかどうかだけだと思う​​。 – AnthonyB

+0

'addEventListener( 'change''を' addEventListener(' keyup ')に変更して英数字を受け付けないようにする@fonr –

0

keyupkeypressを変更する必要があります。私はまた、isNumberKey()コード

HTML

<input type="text"> 

JS

function isNumberKey(value) { 
    console.log(value); 
    var regex = /^[+-]?\d*\.?\d{0,2}$/; 
    if(regex.test(value)){ 
     console.log("true"); 
     return true; 
    }else{ 
     console.log("false"); 
     return false; 
    } 
} 

$("input[type=text]").on('keyup', function(){ 
    if (!isNumberKey(this.value)){ 
    $(this).val(function(index, value){ 
     return value.substr(0, value.length - 1); 
    }); 
    } 
}); 
+0

私はそれを使ってみましたが、d {0,2}の後では2桁しか許さないと思います小数点以下の桁数を変更することはできません。 ここではそれを行うことができます。 https://jsfiddle.net/rahilAhmed/ksj5f52z/ – fonr

+0

'd {0,2}'を 'd {0,1}'に変更しますもう一度試してみてください。動作しているはずです。https://jsfiddle.net/hezronel/09jbu7qk/3/ – Hezron

+0

申し訳ありませんが、互換性の問題と思われます。私はIEであなたのフィドルを開こうとしています。 IEで作業しています(コンソールでは未定義の "evt"です)。でも、Chromeで同じことを試してみると、 – fonr

0

function isNumberKey(evt, element) { 
 
    $('#restricted').bind("change paste keyup blur", function() { 
 

 
    if(this.value.length == 1 && this.value == '-'){ 
 
     //do nothing 
 
    } 
 
    else{ 
 
     var retValu = testInput(this.value); 
 

 
     if(retValu != '1'){ 
 
     try{ 
 
      this.value = this.value.substring(0, this.value.length - 1); 
 
     }catch(e){ 
 

 
     } 
 
     } 
 
    } 
 

 
    }); 
 
} 
 

 
    
 
function testInput(inputValue) 
 
{ 
 

 
    if (inputValue.match(/^-?[+]?[0-9]+([.][0-9]{1,2})?$/)){ 
 
    return 1; 
 
    } 
 
    else if(inputValue.match(/^-?[+]?[0-9]+([.])?$/)){ 
 
    return 1; 
 
    } 
 
    else{ 
 
    return 0; 
 
    } 
 

 
} 
 

 
    testInput("22.33"); 
 
    testInput("-123.45"); 
 
    testInput("0.22"); 
 

 
    testInput("-123.000123"); 
 
    testInput("--123.000123"); 
 
    testInput("-123-23.12"); 
 
    testInput("--23-1.00");

0

100%の作業を更新!!楽しめ!!!そして私たちのような他の人を助けてください!

<html> 
 
    <head> 
 
     <script> 
 
     function replacePonto(){ 
 
     var input = document.getElementById('qtd'); 
 
     var ponto = input.value.split('.').length; 
 
     var slash = input.value.split('-').length; 
 
     if (ponto > 2) 
 
       input.value=input.value.substr(0,(input.value.length)-1); 
 

 
     if(slash > 2) 
 
       input.value=input.value.substr(0,(input.value.length)-1); 
 

 
     input.value=input.value.replace(/[^0-9.-]/,''); 
 

 
     if (ponto ==2) 
 
\t input.value=input.value.substr(0,(input.value.indexOf('.')+3)); 
 

 
if(input.value == '.') 
 
\t input.value = ""; 
 
       } 
 
     </script> 
 
     </head> 
 
     <body> 
 
     <input type="text" id="qtd" maxlength="10" style="width:140px" onkeyup="return replacePonto()"> 
 
     </body> 
 
    </html>

関連する問題