如何使用jQuery允许数字(0-9)和十进制值文本框?

我写了几行只接受数字字符,但我的脚本不起作用。 当我键入任何字母表然后它被插入到我不想要的文本框中。 我希望文本框只接受数值和“。” 小数点。 这是我的剧本。 告诉我那里有什么问题。

$().ready(function () { $("input[id*='txtQty']").keyup(function (event) { var flag = false; if (event.shiftKey == true) { event.preventDefault(); } // Allow Only: keyboard 0-9, numpad 0-9, backspace, tab, left arrow, right arrow, delete if ((event.keyCode >= 48 && event.keyCode = 96 && event.keyCode <= 105) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 46) { // Allow normal operation flag = true; } else { // Prevent the rest event.preventDefault(); } if (flag) { } }); }); 

如果可能请给我脚本,这将使我的文本框只能数字和十进制数字。 谢谢

这是我的完整脚本。 问题是它取点“。” 我不想要的。

  $().ready(function () { $("input[id*='txtQty']").keydown(function (event) { var flag = true; if (event.shiftKey == true) { event.preventDefault(); flag = false; } if ((event.keyCode >= 48 && event.keyCode = 96 && event.keyCode <= 105) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 46 || event.keyCode == 190) { } else { event.preventDefault(); flag = false; } if (flag) { if (jQuery.trim(this.value) != "") { if (IsNumeric(jQuery.trim(this.value)) == true) { var Symbol = $("span[id*='lblPrice']").text().trim().substring(1, 0); var oldprice = $("input[id*='txtHiddenPrice']").val(); var newprice = Math.round((oldprice * this.value), 2); $("span[id*='lblPrice']").text(Symbol + newprice); UpdateCart($(this).closest('tr').find("input[id*='txtItemId']").val(), $(this).closest('tr').find("input[id*='txtProductId']").val(), this.value); } } } }); }); 

所以告诉我在代码中需要更改的内容因此它不应该取十进制值。 另一个重要的事情是我使用外卡系统附加keydown()事件,因为我的页面可能有许多文本框,其名称结尾如txtQty

  $("input[id*='txtQty']").keyup(function (event) { 

所以请帮助我。 谢谢

你不能在keyup事件上使用e.preventDefault()它。 把它keydown

 $(function () { $("input[id*='txtQty']").keydown(function (event) { if (event.shiftKey == true) { event.preventDefault(); } if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 46 || event.keyCode == 190) { } else { event.preventDefault(); } if($(this).val().indexOf('.') !== -1 && event.keyCode == 190) event.preventDefault(); //if a decimal has been added, disable the "."-button }); });​ 

小提琴

您可以在键盘时删除非数字字符。

 $("#txtQty").keyup(function() { var $this = $(this); $this.val($this.val().replace(/[^\d.]/g, '')); });​ 

演示。

创建一个仅限数字的类并将其添加到元素中

这将接受:
– 退格
– 删除
– 数字
– 一位小数

 $(".numbers-only").keypress(function (e) { if(e.which == 46){ if($(this).val().indexOf('.') != -1) { return false; } } if (e.which != 8 && e.which != 0 && e.which != 46 && (e.which < 48 || e.which > 57)) { return false; } }); 

此解决方案仅适用于您不包含十进制数或仅包含0-9的数字的情况

 $("#number").keypress(function( event ){ var key = event.which; if( ! ( key >= 48 && key <= 57 ) ) event.preventDefault(); }); 

你可以在这里查看正在运行的样本http://jsfiddle.net/yghD3/6/

我的解决方案接受复制和粘贴并保存插入符号的位置。 它用于产品成本,因此仅允许正十进制值。 可以很容易地重构,允许负数或只是整数位。

 $(function () { $("input.only-positive-decimal").bind("change keyup input", function () { var position = this.selectionStart - 1; //remove all but number and . var fixed = this.value.replace(/[^0-9\.]/g, ''); if (fixed.charAt(0) === '.') //can't start with . fixed = fixed.slice(1); var pos = fixed.indexOf(".") + 1; if (pos >= 0) //avoid more than one . fixed = fixed.substr(0, pos) + fixed.slice(pos).replace('.', ''); if (this.value !== fixed) { this.value = fixed; this.selectionStart = position; this.selectionEnd = position; } }); }); 

放在html页面上:

  

您可以尝试http://www.texotela.co.uk/code/jquery/numeric/

这个post提到了同样的插件以及你可以尝试的其他一些东西。

 //This will let you enter numbers only and the decimal point ones. $(window).load(function(){ $('.number').keypress(function(event) { if(event.which < 46 || event.which >= 58 || event.which == 47) { event.preventDefault(); } if(event.which == 46 && $(this).val().indexOf('.') != -1) { this.value = '' ; } }); }); 

它只允许1到9个数字小数 。 如果插入了其他字符,它将替换这些数字。

  

入住小提琴 。

 $('.number').keypress(function(event) { if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) { event.preventDefault(); } }); 

试试这个代码

 $('#from-amount1').keypress(function(event) { //alert(event.which == 8); //alert(event.which); if((event.which > 47 && event.which < 58) || (event.which == 46 || event.which == 8)) { // your condition } else { event.preventDefault(); } }).on('paste', function(event) { event.preventDefault(); }); 
   
 element.keypress(function (e) { var charCode = (e.which) ? e.which : event.keyCode; var dec=0; dec = (this.value.match(/[.]/g) || [] ).length; if(dec===1 && e.key=='.') return false; if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode!=46) return false; });