Allow only 2 decimal places in textbox using jquery?

Allow only 2 decimal points when entering a number in a text box using jquery.

Please suggest any regular expression to allow only two decimal words in the text box.

I tried the following code.

$("#amountId").val().replace (/(\.\d\d)\d+|([\d.]*)[^\d.]/, '$1$2'); 
+4
source share
5 answers

You can do this without regex:

 var dec = parseFloat($("#amountId").val(),10).toFixed(2); 
+8
source

HTML:

 <input type="text" class="maskedExt" maskedFormat="3,2" /> maskedFormat="number count before decimal point, number count after decimal point" 

Script:

 $(document).ready(function () { $('body').on('keyup', '.maskedExt', function () { var num = $(this).attr("maskedFormat").toString().split(','); var regex = new RegExp("^\\d{0," + num[0] + "}(\\.\\d{0," + num[1] + "})?$"); if (!regex.test(this.value)) { this.value = this.value.substring(0, this.value.length - 1); } }); }); 
+5
source

I just tested regex to find out. But I recommend going with a fried solution.

 <input id="txtId" type="text"></input> 

 var txt = document.getElementById('txtId'); txt.addEventListener('keyup', myFunc); function myFunc(e) { var val = this.value; var re = /^([0-9]+[\.]?[0-9]?[0-9]?|[0-9]+)$/g; var re1 = /^([0-9]+[\.]?[0-9]?[0-9]?|[0-9]+)/g; if (re.test(val)) { //do something here } else { val = re1.exec(val); if (val) { this.value = val[0]; } else { this.value = ""; } } } 

Working script

+2
source
 function checkDecimal(el){ var ex = /^[0-9]+\.?[0-9]*$/; if(ex.test(el.value)==false){ el.value = el.value.substring(0,el.value.length - 1); } } 
0
source

Another working solution

Html

 <input type="text" id="myTextBox" class="two-decimals"> 

JQuery

 $(".two-decimals").on("keypress", function (evt) { var $txtBox = $(this); var charCode = (evt.which) ? evt.which : evt.keyCode if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 46) return false; else { var len = $txtBox.val().length; var index = $txtBox.val().indexOf('.'); if (index > 0 && charCode == 46) { return false; } if (index > 0) { var charAfterdot = (len + 1) - index; if (charAfterdot > 3) { return false; } } } return $txtBox; //for chaining }); 
0
source

Source: https://habr.com/ru/post/1485966/


All Articles